0

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

谢谢。

4

1 回答 1

5

是的,您应该始终支持 TextRenderer 类。它修复了 Graphics.DrawString() 在低 DPI 设备(如显示器)上的严重损坏行为。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 显示器上:

在此处输入图像描述

于 2012-12-07T10:30:16.383 回答