1

为什么打开抗锯齿会干扰我的虚线笔?

替代文字
(来源:googlepages.com

4

1 回答 1

4

我相信这是创建宽度为 0 的笔然后缩放的问题。在我看来,有两种方法可以解决这个问题:

  1. 创建宽度较大的笔。我发现在 0.38f 处,抗锯齿线中的虚线开始正确缩放。
  2. 手动转换 Pen 的 DashPattern 属性中的值。

您可以使用一些 C# 3.0 代码来完成后一种解决方法:

protected override void OnPaint(PaintEventArgs e)
{
    Graphics g = e.Graphics;
    using (Pen p = new Pen(Color.Black, 0.0f))
    {
        p.DashStyle = DashStyle.Dash;

        g.ScaleTransform(4.0f, 4.0f);

        g.DrawLine(p, 5.0f, 5.0f, 55.0f, 5.0f);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        p.DashPattern = Array.ConvertAll(p.DashPattern, d => d * 4.0f);
        g.DrawLine(p, 5.0f, 10.0f, 55.0f, 10.0f);
    }

    base.OnPaint(e);
}
于 2009-05-07T14:36:00.860 回答