是的,您应该始终支持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);
}
}
Run Code Online (Sandbox Code Playgroud)
在96 dpi显示器上看起来像这样:
