netlib.narod.ru | < Назад | Оглавление | Далее > |
Методы 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 | < Назад | Оглавление | Далее > |