使用GDI创建透明位图?

jma*_*erx 9 c c++ winapi drawing

我想在我的应用程序中实现一个分层系统,并考虑创建一堆透明位图,向它们添加内容然后将它们相互叠加,如何在不将每个像素设置为(0,0,0)的情况下完成,0).我使用Pure win32,而不是MFC,谢谢.

Chr*_*cke 11

透明是什么意思?

如果您正在寻找部分(完全)透明度,那么AlphaBlend是要使用的GDI API.使用alpha加载位图很棘手 - 基本Windows API支持使用alpha加载位图的唯一格式是32bpp .BMP文件,每个字节的前8位都有一个alpha通道 - 低位字节应该预先乘以.

可以使用GDI +加载各种图像格式的alpha - PNG可能是最好的选择,并且可以在32bpp DIBSection上进行blit,因此您可以使用AlphaBlend和普通的GDI函数.

如果你想要一个简单的透明度蒙版而不是一个完整的alpha通道,你可以使用TransparentBlt和一个颜色键来遮挡位图的区域.