我对这两种方法感到困惑。
我的理解是 Graphics.DrawString() 使用 GDI+ 并且是基于图形的实现,而 TextRenderer.DrawString() 使用 GDI 并且允许大范围的字体并支持 unicode。
我的问题是当我尝试将基于十进制的数字作为百分比打印到打印机时。我的研究使我相信 TextRenderer 是一种更好的方法。
但是,MSDN 建议,“TextRenderer 的 DrawText 方法不支持打印。您应该始终使用 Graphics 类的 DrawString 方法。”
我使用 Graphics.DrawString 打印的代码是:
if (value != 0)
e.Graphics.DrawString(String.Format("{0:0.0%}", value), GetFont("Arial", 12, "Regular"), GetBrush("Black"), HorizontalOffset + X, VerticleOffset + Y);
这会为 0 到 1 之间的数字打印“100%”,为低于零的数字打印“-100%”。
当我放置时,
Console.WriteLine(String.Format("{0:0.0%}", value));
在我的打印方法中,值以正确的格式打印(例如:75.0%),所以我很确定问题出在 Graphics.DrawString() 中。