如何使drawLine更顺畅?

sps*_*pli 5 c# graphics gdi+ winforms

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

Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black,3);
g.DrawLine(p,...);
// ...
Run Code Online (Sandbox Code Playgroud)

为什么直线是曲折的,根本不是直的和光滑的.我怎么能让它变得平直和顺畅?

Agn*_*ian 9

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


Han*_*ant 9

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

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