在我的应用中,我需要绘制一个方程。绘制的方程式将由许多小的线性线组成。当我在内部使用DrawLine方法绘制它时,与使用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);


由于某些问题,我需要使用DrawLines方法绘制它。有没有办法使用这种方法来获得高质量?

最佳答案

尝试:

 penKat.EndCap = System.Drawing.Drawing2D.LineCap.Round;
 penKat.StartCap = System.Drawing.Drawing2D.LineCap.Round;
 penKat.LineJoin = LineJoin.Round;


如果您的线条粗于几个像素,MiterLimit可能会有所帮助。

编辑:
对于明快联接,您可能需要尝试使用其他LineJoin值:

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


要么

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


尝试其他MiteLimit值,直到感到满意为止!
或发布带有两个版本的示例图片。

对于2-4像素的笔划宽度,LineJoins之间的差异将不会非常明显。随着行程宽度的增加,这种情况发生了巨大变化。因此,请记住该属性适合那些粗线!

09-27 10:42