在我的应用中,我需要绘制一个方程。绘制的方程式将由许多小的线性线组成。当我在内部使用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之间的差异将不会非常明显。随着行程宽度的增加,这种情况发生了巨大变化。因此,请记住该属性适合那些粗线!