【问题标题】:How to make drawLine smoother?如何使drawLine更平滑?
【发布时间】:2011-04-06 15:46:14
【问题描述】:

我用下面的代码画线:

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

为什么直线是曲折的,一点也不直和平滑。怎样才能让它更直更流畅?

【问题讨论】:

  • 之字形?这让我觉得你不只是在谈论一些抗锯齿可以解决的问题。可以发个截图吗?

标签: c# winforms graphics gdi+


【解决方案1】:

您需要启用抗锯齿功能。将Graphics.SmoothingMode 设置为AntiAlias,如下所述:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的!这就是起初我看不到任何线路的原因。我向 Paint 添加了一个事件处理程序。我试图传递 e.Graphics 但它给出了一个错误“无效参数”。
    • @spspli:你不会将e.Graphics 传递给任何东西。你只需调用它的DrawLine 函数:e.Graphics.DrawLine(p, ...)
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多