Поделиться через


Атрибуты Text-Formatting

Приложение может использовать шесть функций для задания атрибутов форматирования текста для контекста устройства: SetBkColor, SetBkMode, SetTextAlign, SetTextCharacterExtra, SetTextColor и SetTextJustification. Эти функции влияют на выравнивание текста, межсимвый интервал, обоснование текста, а также цвета текста и фона. Кроме того, для получения атрибутов текущего форматирования текста для любого контекста устройства можно использовать шесть других функций: GetBkColor, GetBkMode, GetTextAlign, GetTextCharacterExtra, GetTextColor и GetTextExtentPoint32.

Выравнивание текста

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

Расположение Описание
слева или снизу Точка отсчета находится в левом нижнем углу прямоугольника.
левая или базовая линия Точка отсчета находится на пересечении базовой линии символьной ячейки и левого края прямоугольника.
слева/сверху Точка отсчета находится в левом верхнем углу прямоугольника.
центр/снизу Точка отсчета находится в центре нижней части прямоугольника.
центральная или базовая линия Точка отсчета находится на пересечении базовой линии символьной ячейки и центра прямоугольника.
центр/сверху Точка отсчета находится в центре верхней части прямоугольника.
справа или внизу Точка отсчета находится в правом нижнем углу прямоугольника.
Правая или базовая линия Точка отсчета находится на пересечении базовой линии символьной ячейки и правого края прямоугольника.
справа/сверху Точка отсчета находится в правом верхнем углу прямоугольника.

 

На следующем рисунке показана строка текста, нарисованная путем вызова функции TextOut . Перед рисованием текста была вызвана функция SetTextAlign для перемещения опорной точки в каждое из девяти возможных расположений.

Иллюстрация, показывающая один и тот же текст девять раз, по одному для каждого возможного расположения опорной точки

Выравнивание текста по умолчанию для контекста устройства — это левый верхний угол воображаемого прямоугольника, окружающего текст. Приложение может получить текущий параметр выравнивания текста для любого контекста устройства, вызвав функцию GetTextAlign .

Межсимвовый интервал

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

Иллюстрация, настроив один и тот же текст дважды: сначала с обычным межсимвейным интервалом, а затем с более широким интервалом

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

Текстовое обоснование

Приложения могут использовать функции GetTextExtentPoint32 и SetTextJustification для обоснования строки текста. Текстовое обоснование является распространенной операцией в любой публикации на компьютере и в большинстве текстовых приложений. Функция GetTextExtentPoint32 вычисляет ширину и высоту строки текста. После вычисления ширины приложение может вызвать функцию SetTextJustification для распределения дополнительных интервалов между каждым из слов в строке текста. На следующем рисунке показан абзац текста, напечатанного дважды: в первом абзаце текст не был оправдан; во втором абзаце текст был оправдан вызовом функций GetTextExtentPoint32 и SetTextJustification .

Иллюстрация, показывающая абзац, который выравнивается только слева, а затем один и тот же абзац выравнивается слева и справа

Цвет текста и фона

Приложения могут использовать функцию SetTextColor для задания цвета текста, нарисованного в клиентской области окон, а также цвета текста, нарисованного на цветном принтере. Приложение может использовать функцию SetBkColor , чтобы задать цвет, который отображается за каждым символом, и функцию SetBkMode , чтобы указать, как система должна смешивать выбранный цвет фона с текущим цветом или цветами на видеотрансляции.

Цвет текста по умолчанию для контекста устройства отображения — черный; цвет фона по умолчанию — белый; и фоновый режим по умолчанию — OPAQUE. Приложение может получить текущий цвет текста для контекста устройства, вызвав функцию GetTextColor . Приложение может получить текущий цвет фона для контекста устройства, вызвав функцию GetBkColor и текущий фоновый режим, вызвав функцию GetBkMode .