| 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 | < Назад | Оглавление | Далее > |