netlib.narod.ru< Назад | Оглавление | Далее >

Определение размеров строки

Начиная с главы 2 мы используем MeasureString для определения размеров текстовой строки с целью точного позиционирования текста. Но MeasureString способен и на другое. Как вы, возможно, заметили, метод DrawString выводит текст не изменяя фона. (Это не является поведением по умолчанию в Windows GDI.) Если нужно убрать фон, вы можете использовать координаты точки вывода текста в сочетании с величиной SizeF, возвращаемой MeasureString, в вызове FillRectangle.

У метода MeasureString семь версий:


Методы MeasureString класса Graphics



SizeF MeasureString(string str, Font font);
SizeF MeasureString(string str, Font font, int iWidth);
SizeF MeasureString(string str, Font font, SizeF sizef);
SizeF MeasureString(string str, Font font, int iWidth,
StringFormat strfmt);
SizeF MeasureString(string str, Font font, SizeF sizef,
StringFormat strfmt);
SizeF MeasureString(string str, Font font, PointF ptfOrigin,
StringFormat strfmt);
SizeF MeasureString(string str, Font font, SizeF sizef,
StringFormat strfmt,
out int iCharacters, out int iLines);


Мы уже давно используем первую версию MeasureString. Она возвращает ширину и высоту строки текста с заданным шрифтом. Свойство Height возвращаемого этим методом объекта SizeF, зачастую равно значению, полученному из метода GetHeight класса Font, а если текст включает знаки перевода каретки, Height будет кратно GetHeight.

Вторая версия MeasureString включает третий аргумент — ширину текста. Она удобна, если нужно вывести строку, используя метод DrawString с аргументом RectangleF, и возможен перенос строки. Свойство Width объекта SizeF, возвращаемого методом MeasureString, всегда меньше или равно аргументу iWidth. Свойство Height, деленное на величину GetHeight, дает количество строк.

Третья версия MeasureString имеет аргумент SizeF, определяющий как ширину так и высоту. Если его свойство Width равно аргументу iWidth второй версии MeasureString и если свойство Height достаточно для размещения всех линий текста, образующих строку, эта версия вернет такое же значение, как и вторая. В противном случае свойство Height возвращаемого объекта SizeF будет равно свойству Height аргумента SizeF, а свойство Width возвращаемого объекта SizeF будет показывать максимальную ширину текста, который может поместиться в прямоугольник заданных размеров.

Четвертая, пятая и шестая версии аналогичны второй и третьей за исключением того, что они включают аргумент StringFormat. Если вам понадобится аргумент StringFormat при вызове DrawString, используйте один из этих методов MeasureString.

Последняя версия MeasureString имеет два аргумента, в которых приложению возвращается дополнительная информация. Они показывают количество знаков и строк текста, отображаемых методом DrawString, если ему передается структура RectangleF того же размера, как структура SizeF, и такой же объект StringFormat.

Метод MeasureString с этими аргументами очень удобен, когда для вывода на монитор одного блока текста требуется множество вызовов DrawString. Допустим, вы хотите использовать DrawString, чтобы распечатать на принтере текст, не помещающийся на одну страницу. MeasureString позволяет определить размер текста, который может поместиться на первой странице, и на основе этих данных формировать вторую страницу. Я покажу, как использовать эту версию MeasureString, в программе TextColumns в конце главы.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz