Winapi 从BMP文件创建带有alpha通道的HBITMAP

Winapi 从BMP文件创建带有alpha通道的HBITMAP,winapi,gdi,Winapi,Gdi,我从PNG图像开始。然后,我将alpha通道分割为灰度BMP文件,并将PNG转换为BMP。 我想加载两个BMP文件并合并它们,以提供一个带有alpha通道的HBITMAP: HBITMAP splash = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SPLASH)); HBITMAP splashMask = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SPLASH_MASK)); HBITMAP splashAl

我从PNG图像开始。然后,我将alpha通道分割为灰度BMP文件,并将PNG转换为BMP。 我想加载两个BMP文件并合并它们,以提供一个带有alpha通道的HBITMAP:

HBITMAP splash = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SPLASH));
HBITMAP splashMask = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SPLASH_MASK));
HBITMAP splashAlpha = ....

我发现了一种直接从PNG创建HBITMAP的方法。它使用IStream和COM进行导入。我不希望包含更多的依赖项。当然还有更好的方法吗?

< P>如果你在寻找最小的代码,你应该考虑把你的PNG转换成一个32位的位图,并使用.< /P>绘制它们。 问题是hdcSrc应该指32位BGRA图像,其中Alpha通道被预乘到BGR通道中,即

B = B * A / 255;
G = G * A / 255;
R = R * A / 255;
B = B * A / 255;
G = G * A / 255;
R = R * A / 255;