Приводит ли рисование через hdc с использованием gdi+ к предварительно умноженному альфа-изображению?
Я пытаюсь нарисовать немного растрового изображения на объекте CImage, используя GDI+ DrawImage. Получившееся растровое изображение CImage, кажется, предварительно умножено альфой, но я не могу найти упоминания об этом в документации msdn.
Что происходит, когда я рисую, используя DrawImage поверх CImage HDC?
1 ответ
Да, результат будет предварительно умножен, потому что функция AlphaBlend ожидает предварительно умноженные альфы. Это отмечено в документации AlphaFormat члена BLENDFUNCTION
состав:
AC_SRC_ALPHA - этот флаг устанавливается, когда растровое изображение имеет альфа-канал (то есть альфа-канал на пиксель). Обратите внимание, что API используют предварительно умноженное альфа-значение, что означает, что значения красного, зеленого и синего каналов в битовой карте должны быть предварительно умножены на значение альфа-канала. Например, если значение альфа-канала равно x, красный, зеленый и синий каналы должны быть умножены на x и разделены на 0xff до вызова.
Ссылка: http://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx