如何使drawLine更顺畅?

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

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

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

您需要启用消除锯齿function。 将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的动画。