Создание прозрачного растрового изображения с GDI? - PullRequest
9 голосов
/ 28 апреля 2010

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

Ответы [ 2 ]

11 голосов
/ 28 апреля 2010

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

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

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

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

0 голосов
/ 28 апреля 2010

GDI не поддерживает прозрачность в растровых изображениях и вообще. Попробуйте использовать GDI + .

...