Оформление в WPF

В этом разделе содержится введение в основные типографические возможности WPF. Эти возможности включают повышение качества и производительности оторисовки текста, типографическую поддержку OpenType, расширенный международный текст, улучшенную поддержку шрифтов и новые текстовые API.

В этом разделе содержатся следующие подразделы.

  • Улучшенное качество и производительность работы с текстом
  • Типография с широкими возможностями
  • Расширенная многоязыковая поддержка текста
  • Расширенная поддержка шрифтов
  • Новые API
  • Связанные разделы

Улучшенное качество и производительность работы с текстом

Текст в WPF отрисовывается с помощью Microsoft ClearType, что улучшает четкость и читаемость текста. ClearType — это программная технология, разработанная Microsoft для улучшения удобочитаемости текста на современных ЖК-мониторах (жидкокристаллических дисплеях), например экранах ноутбуков, карманных ПК и плоскопанельных мониторах. ClearType применяет визуализацию на субпиксельном уровне, которая позволяет отображать текст с повышенной точностью формы, выравнивая символы до дробной части пикселя. Дополнительное разрешение повышает четкость мелких деталей отображаемого текста, значительно облегчая его длительное чтение. Другим улучшением ClearType в приложении WPF является применение устранение контурных неровностей по направлению оси y, которое сглаживает неровные края на верхних и нижних частях в текстовых знаках. Дополнительные сведения о возможностях ClearType см. в разделе Общие сведения о технологии ClearType.

Текст со сглаживанием ClearType по оси y

Текст со сглаживанием ClearType по оси Y

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

Диаграмма конвейера отрисовки текста

Диаграмма конвейера отрисовки текста

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

Типография с широкими возможностями

Формат шрифта OpenType является расширением формата TrueType®. Формат шрифта OpenType был разработан совместно корпорацией Microsoft и Adobe и предоставляет широкий набор дополнительных типографических возможностей. Объект Typography поддерживает множество дополнительных возможностей шрифтов OpenType, таких как изменение стилей и swash. Windows SDK предоставляет набор образцов шрифтов OpenType, которые разработаны с широкими возможности, например, шрифты Pericles и Pescadero. Дополнительные сведения см. в разделе Образец пакета шрифтов OpenType.

Шрифт OpenType Pericles содержит дополнительные глифы, поддерживающие изменение стилей для стандартных наборов глифов. Следующий текст отображает глифы с изменением стиля.

Текст, в котором используются стилистически альтернативные глифы OpenType

Текст, использующий глифы с изменением стилей OpenType

Swash глифы являются декоративными глифами, которые используют сложную орнаментацию, часто связанную с каллиграфией. Следующий текст отображает стандартные и swash глифы для шрифта Pescadero.

Текст, в котором используются стандартные и орнаментированные глифы OpenType

Текст, использующий стандартные и swash глифы OpenType

Дополнительные сведения о возможностях OpenType см. в разделе Возможности шрифта OpenType.

Расширенная многоязыковая поддержка текста

WPF поддерживает расширение международного текста, предоставляя следующие возможности:

  • Автоматическая расстановка пробелов во всех системах письма с использованием адаптивного измерения.

  • Широкая поддержка международного текста. Дополнительные сведения см. в разделе Глобализация для WPF.

  • Управляемый языком разрыв строки, расстановка переносов и выравнивание.

Расширенная поддержка шрифтов

WPF предоставляет расширенную поддержку шрифта с помощью следующих возможностей:

  • Юникод для всех текстов. Поведение шрифта и выбор, больше не требующий набора символов или кодовой страницы.

  • Поведение шрифта зависит от глобальных настроек, таких как язык системы.

  • Разделение типов FontWeight, FontStretch и FontStyle для определения FontFamily. Это обеспечивает большую гибкость, чем в программировании Win32, в котором логические сочетания курсивного и полужирного шрифта используются для определения семейства шрифтов.

  • Направление письма (горизонтальное или вертикальное) обрабатывается в зависимости от имени шрифта.

  • Связывание и восстановление шрифта в переносимом файле XML с использованием технологии составного шрифта. Составные шрифты позволяют конструировать все шрифты многоязычного диапазона. Составные шрифты также предоставляют механизм, который позволяет избежать отображения отсутствующих глифов. Дополнительные сведения см. в примечаниях в классе FontFamily.

  • Международные шрифты, созданные из составных шрифтов с использованием группы одноязыковых шрифтов. Это позволяет избежать затрат ресурсов при разработке шрифтов для нескольких языков.

  • Составные шрифты внедряются в документ, тем самым обеспечивая его совместимость. Дополнительные сведения см. в примечаниях в классе FontFamily.

Новые API

WPF предоставляет для разработчиков несколько текстовых APIs, которые используются при включении текста в приложения. Эти APIs сгруппированы в три категории:

  • Макет и пользовательский интерфейс. Общие элементы управления текстом для graphical user interface (GUI).

  • Облегченное рисование текста. Предоставляет возможность рисования текста непосредственно в объекты.

  • Дополнительное форматирование текста. Позволяет реализовать пользовательский обработчик текста.

Макет и пользовательский интерфейс

На высшем уровне функциональности текстовый APIs предоставляет общие элементы управления user interface (UI), такие как Label, TextBlock и TextBox. Эти элементы управления обеспечивают основные элементы UI в приложении и легкий способ представления текста и взаимодействия с ним. Элемент управления, такие как RichTextBox и PasswordBox, обеспечивают более расширенную или специальную обработку текста. И классы, такие как TextRange, TextSelection и TextPointer, предоставляют удобное управление текстом. Эти элементы управления UI предоставляют свойства, такие как FontFamily, FontSize и FontStyle, позволяющие управлять шрифтами, которые используются для отображения текста.

Использование эффектов точечных рисунков и текстовых эффектов

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

Текст с тенью

Тень текста с мягкостью = 0,25

Следующий пример показывает эффект тени и шума, примененный к тексту.

Текст с тенью и шумом

Тень текста с шумом

В следующем примере показан эффект внешнего свечения, примененный к тексту.

Текст с эффектом свечения

Тень текста с использованием OuterGlowBitmapEffect

В следующем примере показан эффект размытия, примененный к тексту.

Текст с эффектом размытия

Тень текста с использованием BlurBitmapEffect

Следующий пример показывает вторую строку текста, масштабированную на 150% вдоль оси x, и третью строку текста, масштабированную на 150% вдоль оси y.

Текст с использованием ScaleTransform

Текст, масштабируемый с использованием ScaleTransform

Следующий пример показывает текст, наклоненный вдоль оси x.

Текст с использованием SkewTransform

Текст, искаженный с использованием SkewTransform

Объект TextEffect является вспомогательным объектом, который позволяет обрабатывать текст как одну или несколько групп символов в текстовой строке. В следующем примере демонстрируется поворот отдельных символов. Поворот каждого символа осуществляется независимо от других с интервалом в 1 секунду.

Пример эффекта анимации поворота текста

Снимок экрана текстового эффекта: повернутый текст

Использование документов нефиксированного формата

Дополнительно к общим элементам управления UI WPF предлагает элемент управления макетом для презентации текста — элемент FlowDocument. Элемент FlowDocument в сочетании с элементом DocumentViewer предоставляет элемент управления для больших объемов текста с различными требованиями к макету. Элементы управления макета обеспечивают доступ к дополнительным возможностям оформления посредством объекта Typography и свойств, связанных со шрифтами других элементов управления UI.

Следующий пример показывает текстовое содержимое, размещенное в объекте FlowDocumentReader, который обеспечивает поддержку поиска, переходов, разбиения на страницы и масштабирования содержимого.

Текст, размещенный в объекте FlowDocumentReader

Снимок экрана примера использования шрифтов OpenType

Дополнительные сведения см. в разделе Документы в WPF.

Облегченное рисование текста

Можно рисовать текст непосредственно в WPF объекты с помощью метода DrawText объекта DrawingContext. Чтобы использовать этот метод, создайте объект FormattedText. Этот объект позволяет рисовать многострочный текст, в котором каждый символ можно форматировать отдельно. Функциональные возможности объекта FormattedText содержат большую часть функциональных возможностей флагов DrawText в API Win32. Кроме того, объект FormattedText содержит функциональные возможности, такие как поддержку многоточия, при котором многоточие отображается, когда текст выходит за границы. В следующем примере показан текст, имеющий несколько примененных к нему форматов, в том числе — линейный градиент на втором и третьем слове.

Отображенный текст с использованием объекта FormattedText

Отображенный текст с использованием объекта FormattedText

Можно преобразовать форматированный текст в объекты Geometry, что позволит вам создавать другие типы визуально интересного текста. Например, можно создать объект Geometry, основанный на контуре строки текста.

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

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

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

Пример установки разного цвета для штриха и заливки

Текст с различными цветами для заполнения штриха

Пример применения кисти к штриху

Текст с кистью изображения, примененной к штриху

Пример применения кисти к штриху и выделению

Текст с кистью изображения, примененной к штриху

Дополнительные сведения об объекте FormattedText см. в разделе Рисование форматированного текста.

Дополнительное форматирование текста

На наиболее развитом уровне текстовых APIs приложение WPF предоставляет возможность создания пользовательской разметки текста с помощью объекта TextFormatter и других типов в пространстве имен System.Windows.Media.TextFormatting. Объект TextFormatter и связанные классы позволяют реализовать макет настраиваемую разметку текста, которая поддерживает пользовательское определение формата символов, стили абзаца, правила разрыва строки и другие возможности разметки для международного текста. Имеется несколько случаев, когда нужно переопределить реализацию по умолчанию поддержки разметки текста WPF. Однако если был создан элемент управления или приложение редактирования текста, может потребоваться реализация, отличная от реализации WPF по умолчанию.

В отличие от традиционного текстового API, объект TextFormatter взаимодействует с клиентом разметки текста через набор методов обратного вызова. Для предоставления этих методов в реализации класса TextSource требуется клиент. Следующая диаграмма иллюстрирует взаимодействие разметки текста между клиентским приложением и объектом TextFormatter.

Взаимодействие между приложением и объектом TextFormatter

Схема клиента структуры текста и TextFormatter

Более подробные сведения о создании макета пользовательской разметки текста содержатся в разделе Дополнительное форматирование текста.

См. также

Ссылки

FormattedText

TextFormatter

Основные понятия

Общие сведения о технологии ClearType

Возможности шрифта OpenType

Рисование форматированного текста

Дополнительное форматирование текста

Оптимизация производительности: отображение текста

Другие ресурсы

Microsoft Typography