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