在我的应用程序中,我需要绘制一个方程。绘制的方程将由许多小的线性线组成。当我在 for 中使用 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 之间的差异不会很明显。随着笔划宽度的增加,这种情况会发生显着变化;因此,对于那些较粗的线条,请记住此属性!
关于c# - DrawLine 方法提供比 DrawLines 方法更高的质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23410665/