有没有办法像以前的 Windows 版本一样在 Windows 8 上呈现 Tahoma 字体文本?我们在 WinForms 应用程序中使用 GDI Graphics.DrawString() 来绘制它,但结果看起来大不相同。字符间距很差。
谢谢。
是的,您应该始终支持 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 显示器上: