перечисление D2D1_ALPHA_MODE (dcommon.h)

Указывает, как следует обрабатывать альфа-значение целевого объекта растрового изображения или отрисовки.

Синтаксис

typedef enum D2D1_ALPHA_MODE {
  D2D1_ALPHA_MODE_UNKNOWN = 0,
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
  D2D1_ALPHA_MODE_STRAIGHT = 2,
  D2D1_ALPHA_MODE_IGNORE = 3,
  D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;

Константы

 
D2D1_ALPHA_MODE_UNKNOWN
Значение: 0
Альфа-значение может быть не значимым.
D2D1_ALPHA_MODE_PREMULTIPLIED
Значение: 1
Альфа-значение было предварительно изменено. Каждый цвет сначала масштабируется по альфа-значению. Само значение альфа-канала одинаково как в прямом, так и в предварительном альфа-канале. Как правило, значение канала цвета не превышает значение альфа-канала. Если значение цветного канала в предварительно заданном формате больше, чем альфа-канал, то стандартная математика исходного смешения приводит к аддитивным смешениям.
D2D1_ALPHA_MODE_STRAIGHT
Значение: 2
Альфа-значение не было предварительно изменено. Альфа-канал указывает прозрачность цвета.
D2D1_ALPHA_MODE_IGNORE
Значение: 3
Альфа-значение игнорируется.
D2D1_ALPHA_MODE_FORCE_DWORD
Значение: 0xffffffff

Комментарии

Перечисление D2D1_ALPHA_MODE используется с перечислением D2D1_PIXEL_FORMAT для указания режима альфа-канала целевого объекта отрисовки или растрового изображения. Различные целевые объекты отрисовки и растровые изображения поддерживают разные альфа-режимы. Список см. в разделе Поддерживаемые форматы пикселей и альфа-режимы.

Различия между прямой и предварительной альфа

При описании цвета RGBA с помощью прямого альфа-канала альфа значение цвета сохраняется в альфа-канале. Например, чтобы описать непрозрачный красный цвет на 60 %, используйте следующие значения: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). Значение 255 указывает на полный красный цвет, а 153 (что составляет 60 процентов от 255) указывает, что цвет должен иметь непрозрачность 60 процентов.

При описании цвета RGBA с помощью предварительного альфа-канала каждый цвет умножается на альфа-значение: (255 * 0,6, 0 * 0,6, 0 * 0,6, 255 * 0,6) = (153, 0, 0, 153).

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

Альфа-режим для целевых объектов отрисовки

Независимо от параметра альфа-режима содержимое целевого объекта отрисовки поддерживает прозрачность. Например, если нарисовать частично прозрачный красный прямоугольник с целевым объектом отрисовки с альфа-режимом D2D1_ALPHA_MODE_IGNORE, прямоугольник будет розовый (если фон белый), как и следовало ожидать.

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

Режимы ClearType и Альфа

Если для целевого объекта отрисовки указан другой альфа-режим, отличный от D2D1_ALPHA_MODE_IGNORE , режим сглаживания текста автоматически изменится с D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE на D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE. (При указании альфа-режима D2D1_ALPHA_MODE_UNKNOWN Direct2D задает альфа-канал в зависимости от типа целевого объекта отрисовки. Список разрешений параметра D2D1_ALPHA_MODE_UNKNOWN для каждого целевого объекта отрисовки см. в обзоре поддерживаемых форматов пикселей и альфа-режимов .)

Вы можете использовать метод SetTextAntialiasMode , чтобы изменить режим сглаживания текста обратно на D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE, но отрисовка текста ClearType на прозрачной поверхности может создать непредсказуемые результаты. Если вы хотите преобразовать текст ClearType в прозрачный целевой объект отрисовки, рекомендуется использовать один из следующих двух методов.

  • Используйте метод PushAxisAlignedClip , чтобы обрезать целевой объект отрисовки до области, в которой будет отображаться текст, затем вызовите метод Clear и укажите непрозрачный цвет, а затем отрисуйте текст.
  • Используйте DrawRectangle , чтобы нарисовать непрозрачный прямоугольник за областью, в которой будет отображаться текст.

Требования

Требование Значение
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновлением платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Верхняя часть dcommon.h (включая D2d1.h)

См. также раздел

Поддерживаемые форматы пикселей и режимы альфа-канала