如何使drawLine更平滑

本文关键字:平滑 drawLine 何使 | 更新日期: 2023-09-27 17:49:30

我使用以下代码来绘制直线:

Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black,3);
g.DrawLine(p,...);
// ...

为什么直线是锯齿状的,而不是直线和平滑的。我怎样才能使它又直又顺呢?

如何使drawLine更平滑

您需要启用抗锯齿。设置Graphics.SmoothingModeAntiAlias,如下所示:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx

重写窗体的OnPaint()方法或实现控件的Paint事件。使用传入的e.Graphics对象进行绘制。将被正确初始化为绘制抗锯齿线。并且可以双缓冲,所以它不会闪烁。调用Invalidate()强制重绘。

使用Control.CreateGraphics()在99.9%的情况下是错误的。无论你画什么,都不能持久。当您最小化和恢复窗口时,它将消失。或者当你把它从屏幕上移开再移回来的时候。或者当你在XP和任何没有启用Aero的机器上重叠另一个窗口时。CreateGraphics()只适用于帧率大于~ 20fps的动画