如何使drawLine更顺畅?

时间:2011-04-06 15:46:15

标签: c# winforms graphics gdi+

我使用以下代码绘制线条:

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

为什么直线是锯齿形的,根本不是直的和光滑的。我怎么能让它变得平直和顺畅?

2 个答案:

答案 0 :(得分:9)

您需要启用消除锯齿功能。将Graphics.SmoothingMode设置为AntiAlias,如下所述:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx

答案 1 :(得分:9)

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

在99.9%的案例中使用Control.CreateGraphics()是错误的。无论你画什么都不能坚持下去。当您最小化并恢复窗口时它将消失。或者当你将它部分移出屏幕并返回时。或者当你在XP上与你的另一个窗口重叠时,以及任何没有启用Aero的机器。 CreateGraphics()仅适用于帧速率大于~20 fps的动画。

相关问题