Windows 8上的Tahoma字体渲染

时间:2012-12-07 10:25:01

标签: c# fonts windows-8 gdi

有没有办法像以前的Windows版本一样在Windows 8上呈现Tahoma字体文本?我们在WinForms应用程序中使用GDI Graphics.DrawString()来绘制它,但结果看起来有很大不同。人物间隔很差。

感谢。

1 个答案:

答案 0 :(得分:5)

是的,你应该总是喜欢TextRenderer类。它修复了低DPI设备(如监视器)上Graphics.DrawString()的破坏行为。 TextRenderer.DrawText()使用GDI的DrawTextEx()winapi函数,该函数与许多本机Windows程序用于呈现文本的函数相同。

两者之间差异的一个很好的证明是这个样本形式:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    protected override void OnPaint(PaintEventArgs e) {
        var s = "Hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
        e.Graphics.DrawString(s, this.Font, Brushes.Black, 0, 0);
        TextRenderer.DrawText(e.Graphics, s, this.Font, new Point(0, this.Font.Height), Color.Black);
        base.OnPaint(e);
    }
}

在96 dpi显示器上看起来像这样:

enter image description here