我使用以下代码来画线:
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black,3);
g.DrawLine(p,...);
// ...
为什么直线是锯齿状的,一点也不笔直光滑。我怎样才能让它变得又直又光滑?
您需要启用抗锯齿功能。将
Graphics.SmoothingMode
设置为 AntiAlias
,如下所述:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx
重写窗体的 OnPaint() 方法或实现控件的 Paint 事件。使用传递的 e.Graphics 对象进行绘制。 它将被正确初始化以绘制抗锯齿线。并且可以双缓冲,因此不会闪烁。调用 Invalidate() 强制重绘。
在 99.9% 的情况下,使用 Control.CreateGraphics() 都是错误的。无论你画什么,都无法持久。当您最小化并恢复窗口时,它就会消失。或者当您将其部分移出屏幕并移回时。或者当您在 XP 和任何未启用 Aero 的计算机上重叠另一个窗口时。 CreateGraphics() 仅适用于帧速率大于 ~20 fps 的动画。