我正在使用相交的线条绘制一个GraphicPant,我想知道线条的边缘是否可以被舍入。
我绘制的代码是:
Graphics G = e.Graphics;
GraphicsPath gp = new GraphicsPath();
gp.AddLine((float)(line.startX), (float)(line.startY), (float)(line.endX), (float)(line.endY));
gp.CloseFigure();
using (Pen pen = new Pen(Color.DarkGray, 0.0001f))
{
G.SmoothingMode = SmoothingMode.AntiAlias;
G.Clear(Color.White);
G.DrawPath(pen, gp)
}
答案 0 :(得分:2)
尝试:
pen.StartCap = LineCap.Round;
pen.EndCap = LineCap.Round;
答案 1 :(得分:1)
使用这么小的Pen.Width
会产生一条仅一个像素'厚的线条。但是根据定义,像素总是正方形。因此,如果您使用非抖动或-antialising软件进行放大,它将看起来,就好像两端都是正方形一样。
但他们确实有没有形状,因为他们没有真正的大小。相反,它们的宽度是虚拟数字:使用的一个像素只是默认最小值,因此该行不会消失
所以:是的,Pen.Width
确实很重要。
所以:将它设置为大于1的合理数字,你会看到圆形端点..
您还可以将Graphics
对象缩放一个合适的数字,然后您也可以看到圆形的末端。如果您想尝试,请不要忘记将坐标调整为极端缩放!
对于由AddLines
创建的多行(如果您认真对待AddPolygon
,则为CloseFigure
)还设置了LineJoin
:
pen.LineJoin = LineJoin.Round;
pen.EndCap = LineCap.Round;
pen.StartCap = LineCap.Round;