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
——那么他笔的单位是多少??我想不是吧?!?!agp.CloseFigure()是什么代码>仅使用一行吗???当我将开始和结束封口定义为LineCap.Round
,但该行仍然具有方形边缘。我的钢笔厚度是0.001f
,这有关系吗?实际上它可能也应该是pen.LineJoin=System.Drawing.Drawing2D.LineJoin.Round
——那么他笔的单位是多少??我想不是吧?!?!agp.CloseFigure()是什么代码>只用一行吗???是的,pen.Linejoin
做了这个把戏,端盖没有任何区别。如果你还记得我之前的问题,整个坐标系是按比例放大的,所以考虑到比例,钢笔的宽度实际上是一条粗线。我为没有在问题中添加更多背景代码而道歉,我认为这无关紧要。是的,pen.Linejoin
起到了作用,端盖没有任何区别。如果你还记得我之前的问题,整个坐标系是按比例放大的,所以考虑到比例,钢笔的宽度实际上是一条粗线。我为没有在问题中添加更多背景代码而道歉,我认为这无关紧要。