C# DrawLines方法比DrawLines方法提供更高的质量

C# DrawLines方法比DrawLines方法提供更高的质量,c#,graphics,drawing,C#,Graphics,Drawing,在我的应用中,我需要画一个方程式。绘制的方程式将由许多小直线组成。当我在a中使用DrawLines方法绘制它时,我获得了比使用DrawLines方法更高的质量 Graphics canvas = pnlCanvas.CreateGraphics(); canvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //High Quality for (int i = 0; i < plot_point

在我的应用中,我需要画一个方程式。绘制的方程式将由许多小直线组成。当我在a中使用DrawLines方法绘制它时,我获得了比使用DrawLines方法更高的质量

Graphics canvas = pnlCanvas.CreateGraphics();
canvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

//High Quality
for (int i = 0; i < plot_points.Length - 1; i++)
{
    canvas.DrawLine(penKat, plot_points[i], plot_points[i + 1]);
}

//Low Quality
canvas.DrawLines(penKat, plot_points);
Graphics canvas=pnlCanvas.CreateGraphics();
canvas.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//高质量
对于(int i=0;i
由于一些问题,我需要使用DrawLines方法绘制它。有没有办法用这种方法获得高质量的产品?

试试:

 penKat.EndCap = System.Drawing.Drawing2D.LineCap.Round;
 penKat.StartCap = System.Drawing.Drawing2D.LineCap.Round;
 penKat.LineJoin = LineJoin.Round;
如果线条比几个像素厚,MiterLimit可能会有所帮助

编辑: 对于快速连接,您可能希望尝试使用其他线条连接值:

 penKat.LineJoin = LineJoin.MiterClipped;
 penKat.MiterLimit = 1.5f;

一定要尝试其他极限值,直到你满意为止! 或者发布两个版本的示例图像


对于2-4像素的笔划宽度,线条连接之间的差异将不太明显。随着笔划宽度的增加,发生显著变化;因此,请记住这些较粗线条的属性

不要使用CreateGraphics。使用pnlCanvas绘制事件中的图形对象。你的钢笔信息会很好。考虑使用StAcPCAP和EnPCAP来为您的钢笔做拉线示例,与引线示例更兼容。这样就好了线条有多粗?钢笔的定义可能真的很有用。。抽绳应至少提供与多个抽绳通话相同的质量。如果是临时性的,这是强制性的!线条有3像素厚。您的代码修复了行的起点和终点。我不能投票支持你,因为我没有足够的声誉。你能描述一下剩下的问题吗?EndCap和StartCap工作得很好。无论我在LineJoin上使用什么,都不会改变结果,但看起来也不错。谢谢
 penKat.LineJoin = LineJoin.Miter;
 penKat.MiterLimit = 1.5f;