Приводит ли рисование через HDC с использованием gdi + к предварительно умноженному альфа-изображению? - PullRequest
1 голос
/ 26 января 2010

Я пытаюсь нарисовать растровое изображение на объекте CImage, используя GDI + DrawImage. Получившееся растровое изображение CImage, кажется, предварительно умножено альфа, но я не могу найти упоминания об этом в документации msdn.

Что происходит, когда я рисую, используя DrawImage поверх CImage HDC?

1 Ответ

0 голосов
/ 02 мая 2011

Да, результат будет предварительно умножен, потому что функция AlphaBlend ожидает предварительно умноженные альфа. Это отмечено в документации AlphaFormat член структуры BLENDFUNCTION:

AC_SRC_ALPHA - Этот флаг устанавливается, когда растровое изображение имеет альфа-канал (то есть альфа на пиксель). Обратите внимание, что API используют предварительно умноженный альфа-канал, что означает, что значения красного, зеленого и синего каналов в битовой карте должны быть предварительно умножены на значение альфа-канала. Например, если значение альфа-канала равно x, красный, зеленый и синий каналы должны быть умножены на x и разделены на 0xff до вызова.

Ссылка: http://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx

...