c# - DrawLine 方法提供比 DrawLines 方法更高的质量

标签 c# graphics drawing

在我的应用程序中,我需要绘制一个方程。绘制的方程将由许多小的线性线组成。当我在 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/

相关文章:

c# - 使用一系列日期时间填充列表的简单方法

c# - KeyEventArgs.Handled 与 KeyEventArgs.SupressKeyPress

iphone - 绘制倒计时圆圈

objective-c - 如何用贝塞尔曲线绘制矩形?

安卓(和引擎): Drawing with touch using particles

c# - Windows Mobile - 停止主手机应用程序

c# - 在音频文件中查找音频样本(频谱图已存在)

c++ - 不完整的多线程 RayTracer 花费的时间是预期的两倍

javascript - 将 SVG 曲线拟合为多项式

c - C 中的 pieslice() 函数