2010-04-28 5 views
8

Я хочу внедрить систему слоев в моем приложении и думал о создании пучки прозрачных растровых изображений, добавляя к ним контент, а затем смешал их друг над другом, как это можно сделать без установки каждого пикселя (0,0 , 0,0). Я использую Pure win32, а не MFC, спасибо.Создание прозрачного растрового изображения с GDI?

ответ

10

Что вы подразумеваете под прозрачностью?

Если вы ищете частичную (полную) прозрачность, то AlphaBlend - это API GDI для использования. Загрузка растровых изображений с альфой сложна. Единственный формат, поддерживаемый базовым окном API для загрузки растровых изображений с альфой, - это 32-битный файл .BMP с альфа-каналом в верхних 8 битах каждого байта - и нижние байты должны быть предварительно умножены.

Возможно использование GDI + для загрузки различных форматов изображений с альфа-PNG, вероятно, лучше всего подходит, и blit на 32bpp DIBSection, чтобы вы могли использовать AlphaBlend и простые функции GDI.

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

-1

GDI не поддерживает прозрачность в растровых изображениях и в целом. Рассмотрим использование GDI+.

+0

Он сортирует - он поддерживает прозрачное смешивание одного растрового изображения на другом, используя альфа-компоненты в растровом изображении через AlphaBlend. Существуют также нечетные расширения для поддержки Aero в окнах, которые также могут рассчитывать. Вы правы в общем случае. –

+0

Существует также TransparentBlt, но при использовании 32-битных изображений (например, с указанными прозрачностью) AlphaBlend - это путь. – dlanod

Смежные вопросы