确定.NET中渲染字符的宽度

ast*_*ght 11 c#

假设我在Arial Regular中使用14号字体将字符"A"渲染到屏幕上.C#中有没有办法计算它的宽度是多少?


谢谢你到目前为止的所有答案.我渲染文本的方式是通过ESRI的ArcEngine,它通过DynamicDisplay引擎调用GDI或GDI +(我不知道哪一个).

Dir*_*mar 11

这取决于正在使用的渲染引擎..NET可能使用GDI或GDI +.可以通过相应地设置UseCompatibleTextRendering属性或调用Application.SetCompatibleTextRenderingDefault方法来完成切换.

使用GDI +时,您应该使用MeasureString:

string s = "A sample string";

SizeF size = e.Graphics.MeasureString(s, new Font("Arial", 24));
Run Code Online (Sandbox Code Playgroud)

使用GDI(即本机Win32渲染)时,您应该使用TextRenderer该类:

SizeF size = TextRenderer.MeasureText(s, new Font("Arial", 24));
Run Code Online (Sandbox Code Playgroud)

本文描述了更多细节:

文本渲染:在Windows窗体控件中使用复杂脚本构建适用于全球的应用程序

请注意,上面谈到了Windows窗体.在WPF中你会使用FormattedText