具有圆边的DrawPath点

时间:2016-06-22 21:21:12

标签: c# graphics draw

我正在使用相交的线条绘制一个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)
   }

如果它看起来像这样: enter image description here

2 个答案:

答案 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;