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


Альфа-смешение (Windows GDI)

Альфа-смешение используется для отображения альфа-растрового изображения, то есть растрового изображения с прозрачными или полупрозрачными пикселями. В дополнение к красному, зеленому и синему цветовым каналам каждый пиксель в альфа-растровом рисунке имеет компонент прозрачности, известный как альфа-канал. Альфа-канал обычно содержит столько битов, сколько цветной канал. Например, 8-разрядный альфа-канал может представлять 256 уровней прозрачности: от 0 (все растровое изображение прозрачно) до 255 (все растровое изображение является непрозрачным).

Механизмы альфа-смешения вызываются путем вызова AlphaBlend, который ссылается на структуру BLENDFUNCTION .

Альфа-значения на пиксель поддерживаются только для BI_RGB со значением 32 пикселей. Эта формула определяется следующим образом:

typedef struct {
  BYTE   Blue;
  BYTE   Green;
  BYTE   Red;
  BYTE   Alpha;
};

Он представлен в памяти, как показано в следующей таблице.

31:24

23:16

15:08

07:00

Коэффициент альфа

Красный

Зеленый

Синий

Точечные изображения также могут отображаться с коэффициентом прозрачности, применяемым ко всему растровом рисунку. Любой формат растрового изображения можно отобразить с глобальным константным альфа-значением, задав SourceConstantAlpha в структуре BLENDFUNCTION . Глобальное значение альфа-канала константы имеет 256 уровней прозрачности: от 0 (все растровое изображение полностью прозрачно) до 255 (все растровое изображение полностью непрозрачно). Глобальное постоянное альфа-значение объединяется со значением альфа-канала для каждого пикселя.

Пример см. в разделе Альфа-смешивание растрового изображения.