C# 具有圆角边的绘图路径点

C# 具有圆角边的绘图路径点,c#,graphics,draw,C#,Graphics,Draw,我正在用相交的线绘制一个图形,我想知道这些线的边是否可以被磨圆 我画的代码是: 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.D

我正在用相交的线绘制一个图形,我想知道这些线的边是否可以被磨圆

我画的代码是:

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)
   }
如果它可以像这样: 试试:

pen.StartCap = LineCap.Round;
pen.EndCap = LineCap.Round;
尝试:


使用如此小的
笔。宽度
将产生一条只有一个像素“粗”的线。但是根据定义,像素总是正方形的。因此,如果您使用非抖动或反校准软件进行放大,它将看起来就像两端是方形的

但是它们确实没有形状,因为它们没有真正的尺寸。相反,它们的宽度是一个虚拟数字:所使用的一个像素只是所使用的默认值最小值,因此线条不会消失

所以:是的,
Pen.Width
确实很重要

因此:请将其设置为大于1的合理数字,您将看到圆形端点

您还可以将
图形
对象按适当的数字缩放,也可以看到圆角。如果您想尝试,请不要忘记将坐标调整到极限缩放


对于由
AddLines
(或
AddPolygon
创建的多行,如果您对
CloseFigure
很认真,也可以设置
LineJoin

pen.LineJoin = LineJoin.Round;
pen.EndCap = LineCap.Round;
pen.StartCap = LineCap.Round;

使用如此小的
笔。宽度
将产生一条只有一个像素“粗”的线。但是根据定义,像素总是正方形的。因此,如果您使用非抖动或反校准软件进行放大,它将看起来就像两端是方形的

但是它们确实没有形状,因为它们没有真正的尺寸。相反,它们的宽度是一个虚拟数字:所使用的一个像素只是所使用的默认值最小值,因此线条不会消失

所以:是的,
Pen.Width
确实很重要

因此:请将其设置为大于1的合理数字,您将看到圆形端点

您还可以将
图形
对象按适当的数字缩放,也可以看到圆角。如果您想尝试,请不要忘记将坐标调整到极限缩放


对于由
AddLines
(或
AddPolygon
创建的多行,如果您对
CloseFigure
很认真,也可以设置
LineJoin

pen.LineJoin = LineJoin.Round;
pen.EndCap = LineCap.Round;
pen.StartCap = LineCap.Round;

在这里,我为你搜索了这个:哦,哇,搜索了30分钟,没有任何相似的。。但是,当我将起始和结束封口定义为
LineCap.Round
,但线条仍然具有方形边缘。Penthickness是
0.001f
,这有关系吗?看起来它只适用于DrawLine,而不适用于DrawPath。你可能需要一行一行地画路径。它与DrawPath配合得很好。在这里,我为你搜索了这个:哦,哇,搜索了30分钟,没有任何相似之处。。但是,当我将起始和结束封口定义为
LineCap.Round
,但线条仍然具有方形边缘。Penthickness是
0.001f
,这有关系吗?看起来它只适用于DrawLine,而不适用于DrawPath。您可能需要一行一行地绘制路径。它与DrawPath配合得很好。当我将起点和终点封口定义为
LineCap.Round
时,该线仍然具有方形边缘。我的钢笔厚度是
0.001f
,这有关系吗?实际上它可能也应该是
pen.LineJoin=System.Drawing.Drawing2D.LineJoin.Round
——那么他笔的单位是多少??我想不是吧?!?!a
gp.CloseFigure()是什么仅使用一行吗???当我将开始和结束封口定义为
LineCap.Round
,但该行仍然具有方形边缘。我的钢笔厚度是
0.001f
,这有关系吗?实际上它可能也应该是
pen.LineJoin=System.Drawing.Drawing2D.LineJoin.Round
——那么他笔的单位是多少??我想不是吧?!?!a
gp.CloseFigure()是什么只用一行吗???是的,
pen.Linejoin
做了这个把戏,端盖没有任何区别。如果你还记得我之前的问题,整个坐标系是按比例放大的,所以考虑到比例,钢笔的宽度实际上是一条粗线。我为没有在问题中添加更多背景代码而道歉,我认为这无关紧要。是的,
pen.Linejoin
起到了作用,端盖没有任何区别。如果你还记得我之前的问题,整个坐标系是按比例放大的,所以考虑到比例,钢笔的宽度实际上是一条粗线。我为没有在问题中添加更多背景代码而道歉,我认为这无关紧要。