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

Параметры StringFormat

Методы DrawString и MeasureString могут в качестве необязательного аргумента принимать объект типа StringFormat. Этот аргумент предлагает массу вариантов вывода текста на экран. Вы можете создать объект StringFormat, используя один из конструкторов:


Конструкторы StringFormat



StringFormat()
StringFormat(StringFormat strfmt)
StringFormat(StringFormatFlags sff)
StringFormat(StringFormatFlags sff, int iLanguage)


Вторая версия по существу клонирует существующий объект StringFormat. Третья и четвертая — создают объект StringFormat на основе комбинации значений перечисления StringFormatFlags. Перечисление StringFormatFlags используется также при установке свойства FormatFlags класса StringFormat:


Свойства StringFormat (выборочно)



Тип Свойство Доступ

StringFormatFlags FormatFlags Чтение/запись


Перечисление StringFormatFlags — это набор битовых флагов:


Свойства StringFormat (выборочно)



Член Значение

DirectionRightToLeft 1
DirectionVertical 2
FitBlackBox 4
DisplayFormatControl 32
NoFontFallback 1024
MeasureTrailingSpaces 2048
NoWrap 4096
LineLimit 8192
NoClip 16384


Некоторые из этих флагов мы рассмотрим позднее при обсуждении некоторых программ. MeasureTrailingSpaces используется в программе TypeAway в главе 6, программу BoldAndItalicTighter мы обсудим чуть ниже, а программу TrimmingTheText с флагами NoWrap и NoClip — далее в этой главе.

Если новый объект StringFormat создается конструктором по умолчанию, свойство FormatFlags равно 0. Замечу, что значения перечисления однобитовые, поэтому вы можете комбинировать их оператором логического ИЛИ языка С#. Например:

  StringFormat strfmt = new StringFormat(StringFormatFlags.DirectionVertical |
                                         StringFormatFlags.NoClip);

При установке свойства FormatFlags я бы рекомендовал применять оператор |=:

  strfmt.FormatFlags |= StringFormatFlags.NoWrap;

При этом вы никогда случайно не сбросите один из других флагов, которые вы, возможно, установили ранее.

Объект StringFormat можно также получить, используя одно из следующих статических свойств:


Статические свойства StringFormat



Тип Свойство Доступ

StringFormat GenericDefault Чтение
StringFormat GenericTypographic Чтение


Если рассмотреть свойства объектов StringFormat, возвращаемых этими статическими свойствами, можно увидеть, что GenericDefault возвращает такой же объект StringFormat, который создается конструктором по умолчанию. Свойство GenericTypographic возвращает объект, в котором установлены флаги FitBlackBox, LineLimit и NoClip, а также некоторое значение свойства Trimming, которое мы обсудим позднее.

Однако объект StringFormat, возвращаемый свойством GenericTypographic, оказывает дополнительное воздействие на методы DrawString и MeasureString, недостижимое при использовании открытых свойств StringFormat и флагов. Этот эффект мы и рассмотрим.


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

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