我对这两种方法感到困惑。
我的理解是,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%”。以下是需要翻译的内容:
When I place,
Console.WriteLine(String.Format("{0:0.0%}", value));
在我的打印方法中,值以正确的格式(例如:75.0%)打印出来,因此我相信问题在于Graphics.DrawString()。
value
被当作整数处理了。我建议将您的String.Format拆分成一个单独的字符串变量,以便您可以在Graphics.DrawString上设置断点,并在调试期间检查value和生成的字符串的内容。我非常怀疑这是由Graphics.DrawString引起的。 - JamieSee