绘制具有透明度的位图

时间:2017-10-22 08:07:08

标签: c++ winapi bitmap gdi

我正在创建一个用户界面并以这种方式实现绘制位图:

HDC hdcMem = CreateCompatibleDC(hdc);

HBITMAP oldBmp = (HBITMAP)SelectObject(hdcMem, mouseover? bitmapover:bitmap);    

StretchBlt(hdc, xabs, yabs, width, height, hdcMem, 0, 0, worg, horg, SRCCOPY);

SelectObject(hdcMem, oldBmp);
DeleteDC(hdcMem);

但我只能绘制平面图像,我需要绘制透明图像(几个alpha级别)。我用GetDIBitsSetDIBits尝试了一些东西,但我没有画任何东西。我可以使用png或逐个像素地修改位图,这更简单,我只是想避免使用带有dll或限制性许可证的库。

1 个答案:

答案 0 :(得分:1)

要绘制半透明位图,您可以使用GdiAlphaBlend function。请注意,您要使用此API绘制的带alpha通道的位图需要预乘alpha。