使用GDI创建透明位图?

时间:2010-04-28 03:02:21

标签: c++ c winapi drawing

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

2 个答案:

答案 0 :(得分:11)

透明是什么意思?

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

可以使用GDI +加载各种带alpha的图像格式 - PNG可能是最好的选择,并且可以在32bpp的DIBSection上进行blit,这样你就可以使用AlphaBlend和普通的GDI函数了。

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

答案 1 :(得分:-1)

GDI不支持位图和一般情况下的透明度。考虑使用GDI+