Как определить размер строки с учетом шрифта - PullRequest
16 голосов
/ 06 апреля 2009

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

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

Ответы [ 3 ]

19 голосов
/ 06 апреля 2009

Зависит от используемого движка рендеринга. Вы можете переключаться между GDI и GDI +. Переключение может быть сделано путем установки свойства <a href="http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase.usecompatibletextrendering.aspx" rel="noreferrer">UseCompatibleTextRendering</a> соответственно

При использовании 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

5 голосов
/ 06 апреля 2009

Как насчет этого:

Size stringsize = graphics.MeasureString("hello", myFont);

( Здесь - ссылка MSDN.)

0 голосов
/ 06 апреля 2009

Назад в Win32 я использовал эквивалент для функции VisualStyleRenderer :: GetTextExtent для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...