【问题标题】:The text is too bold by DrawString on C#C# 上的 DrawString 文本太粗
【发布时间】:2014-09-05 02:05:52
【问题描述】:

我已经使用 GDI DrawString 方法来绘制文本。当程序运行时,屏幕上的文字看起来很好,但是一旦我将文件保存到图像中,字体会比以前更粗。正常的会加粗,加粗的会更粗。如何处理?

public override void DrawTo(Graphics g, int x, int y, int flag)
    {
        if (flag == 1)
        {
            Pen dpen = new Pen(Color.FromArgb(128, 0, 0, 0), 1);
            dpen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
            g.DrawRectangle(dpen, new Rectangle(Bounds.X + x, Bounds.Y + y, Bounds.Width, Bounds.Height));
        }

        if (!string.IsNullOrEmpty(Text))
        {

            g.DrawString(Text, Font, new SolidBrush(Color), new Rectangle(Bounds.X + x, Bounds.Y + y, Bounds.Width, Bounds.Height));
        }
    }

【问题讨论】:

  • 致电g.Clear(...); ?发布更多代码,以便我们有机会帮助您。
  • 可能您需要正确提及字体(屏幕和打印机都应该可用)
  • 您实际使用的是哪种字体?您如何处理 DPI?
  • 我用的是“Tahoma”字体,但不管我用什么字体,保存的图像上的文字都会比正常的要强。我没有设置DPI。您可以看到这里是保存前的 DrawString 结果:link,这是保存的图像:link
  • 我们仍然需要查看重现问题的相关代码。

标签: c# image gdi+ drawstring


【解决方案1】:

我找到了解决方案。

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

只要 AntiAlias 就能解决这个问题。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 我尝试使用 TextRenderingHint、SmoothingMode、TextContrast,但没有任何改变。

    我已将 graph.Clear(Color.Transparency) 替换为 graph.Clear(Color.White) 并且 Text 现在看起来不错。

    【讨论】:

      【解决方案3】:

      与其将TextRenderingHint 设置为TextRenderingHint.AntiAlias,不如将​​其设置为TextRenderingHint.SingleBitPerPixelGridFit。例如:

      g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
      

      【讨论】:

        猜你喜欢
        • 2014-05-17
        • 1970-01-01
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 2011-05-04
        相关资源
        最近更新 更多