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


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

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

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

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

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

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

31:24

23:16

15:08

07:00

Альфа

Красный

Зеленый

Синий

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

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