Thursday, February 17, 2011

Calculate the display width of a string in C#?

A Java version of this question was just answered, and, well, I don't know how to do this in .net.

So how do you calculate the display width of a string in C# / .net?

From stackoverflow
  • You've got the same problem in this question as was present in the Java question - not enough information! It will differ between WinForms and WPF.

    For WinForms: Graphics.MeasureString

    For WPF I'm not sure, but I suspect it will depend on the exact way you're drawing the text...

    Todd White : In WPF you would use FormattedText, http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.aspx.
    Jon Skeet : @Todd: Thanks :)
  • Graphics.MeasureString but its a bit crappy, as is explained and improved upon; here

  • You would use Graphics.MeasureString.

    http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

  • An alternative for Windows Forms is the static TextRenderer.MeasureText method.

    Although restricted to integer sizes, this (in tandem with TextRenderer.DrawText) renders more accurate and much higher quality ClearType text than the Graphics.MeasureString/DrawString duo.

    MusiGenesis : Cool. Never heard of the TextRenderer before.
  • In WPF you would use FormattedText.

0 comments:

Post a Comment