Как определить размер строки с учетом шрифта
У меня небольшая форма, которая отображает некоторую информацию о ходе.
Очень редко мне приходится показывать довольно длинное сообщение, и я хочу иметь возможность изменять размер этой формы при необходимости, чтобы это сообщение соответствовало форме.
Итак, как мне узнать, как будет отображаться широкая строка S
в шрифте F
?
Ответы
Ответ 1
Это зависит от используемого механизма рендеринга. Вы можете переключаться между GDI и GDI+. Переключение может быть выполнено путем установки свойства UseCompatibleTextRendering
соответственно
При использовании GDI + вы должны использовать MeasureString
:
string s = "A sample string";
SizeF size = e.Graphics.MeasureString(s, new Font("Arial", 24));
При использовании GDI (т.е. собственного рендеринга Win32) вы должны использовать класс TextRenderer
:
SizeF size = TextRenderer.MeasureText(s, new Font("Arial", 24));
См. статью: Текстовое рендеринг: создание приложений с поддержкой мира с использованием сложных скриптов в элементах управления Windows Forms
Ответ 2
Как насчет этого:
Size stringsize = graphics.MeasureString("hello", myFont);
(Здесь - ссылка MSDN.)
Ответ 3
В Win32 я использовал эквивалент для функции VisualStyleRenderer:: GetTextExtent для этого.