C# 如何使抽绳更平滑?

C# 如何使抽绳更平滑?,c#,winforms,graphics,gdi+,C#,Winforms,Graphics,Gdi+,我使用以下代码来绘制线: Graphics g = this.CreateGraphics(); Pen p = new Pen(Color.Black,3); g.DrawLine(p,...); // ... 为什么直线是之字形的,一点也不笔直和平滑。我怎样才能使它更直更平滑?您需要启用抗锯齿功能。将Graphics.SmoothingMode设置为antialas,如下所述:重写窗体的OnPaint()方法或实现控件的绘制事件。使用传递的e.Graphics对象进行绘制。它将被正确初始化

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

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

为什么直线是之字形的,一点也不笔直和平滑。我怎样才能使它更直更平滑?

您需要启用抗锯齿功能。将
Graphics.SmoothingMode
设置为
antialas
,如下所述:

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


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

Zig-zag?这让我觉得你说的不仅仅是一点点抗锯齿就能解决的问题。你能发布截图吗?是的!这就是为什么一开始我看不到我的任何一行。我又添加了一个事件处理程序来绘制。我试图传递e.Graphics,但它给出了一个错误“无效参数”。@spsppli:你不能传递
e.Graphics
。您只需调用其
DrawLine
函数:
e.Graphics.DrawLine(p,…)