如何让drawLine更流畅?

问题描述 投票:0回答:3

我使用以下代码来画线:

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

为什么直线是锯齿状的,一点也不笔直光滑。我怎样才能让它变得又直又光滑?

c# winforms graphics gdi+
3个回答
11
投票

您需要启用抗锯齿功能。将

Graphics.SmoothingMode
设置为
AntiAlias
,如下所述:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx


9
投票

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

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


0
投票

与我们的需求完美匹配。 带别名的结果图片enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.