我使用以下代码绘制线条:
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black,3);
g.DrawLine(p,...);
// ...
为什么直线是锯齿形的,根本不是直的和光滑的。我怎么能让它变得平直和顺畅?
答案 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的动画。