Подтвердить что ты не робот

Как определить размер строки с учетом шрифта

У меня небольшая форма, которая отображает некоторую информацию о ходе.
Очень редко мне приходится показывать довольно длинное сообщение, и я хочу иметь возможность изменять размер этой формы при необходимости, чтобы это сообщение соответствовало форме.

Итак, как мне узнать, как будет отображаться широкая строка S в шрифте F?

4b9b3361

Ответ 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 для этого.