计算C#中字符串的显示宽度?

Jef*_*yer 52 .net c#

刚回答了这个问题的Java版本,而且,我不知道如何在.net中执行此操作.

那么如何计算C#/ .net中字符串的显示宽度呢?

Ala*_*lan 63

Windows Forms的替代方法是静态TextRenderer.MeasureText方法.

虽然限制为整数大小,但它(与TextRenderer.DrawText一起)呈现比Graphics.MeasureString/DrawString二重奏更准确和更高质量的ClearType文本.

  • 以供参考:[TextRenderer.MeasureText上MSDN](http://msdn.microsoft.com/en-us/library/system.windows.forms.textrenderer.measuretext.aspx) (2认同)
  • 请参阅此线程:http://stackoverflow.com/questions/6704923/textrenderer-measuretext-and-graphics-measurestring-mismatch-in-size 和此博客文章:http://blogs.msdn.com/b/jfoscoding/ archive/2005/10/13/480632.aspx 了解更多信息。看来使用 TextRenderer.MeasureText 是适用于大多数 .Net WinForms 使用的方法。 (2认同)

Jon*_*eet 57

你在这个问题中遇到了与Java问题相同的问题 - 没有足够的信息!它在WinForms和WPF之间会有所不同.

对于WinForms:Graphics.MeasureString

对于WPF我不确定,但我怀疑它将取决于你绘制文本的确切方式......

  • 在WPF中,您将使用FormattedText,http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.aspx. (19认同)
  • @Shimmy:在ASP.NET中,它完全取决于浏览器的功能.这真的不是你在网络应用程序中尝试做的事情 - 你使用CSS来控制格式. (3认同)
  • @Shimmy:这不是准确性的问题 - 这是从服务器端基本上无法预测的问题.如果有的话,您需要在客户端进行此操作.但无论如何,它绝对不是一个.NET问题.我建议你提出一个新问题,非常准确地提出你的要求. (2认同)

Tod*_*ite 22

在WPF中,您将使用FormattedText.


And*_*ock 9

Graphics.MeasureString但它有点蹩脚,正如解释和改进; 这里