我试图将包含透明区域的增强图元转换为仅使用GDI函数的32位位图。 这有可能得到正确的alpha值吗?
以下将导致将每个像素的alpha值设置为0的32位位图:
首先,我使用GetDC(NULL)
检索的屏幕DC,用CreateCompatibleDC(NULL)
创build一个内存DC,用CreateCompatibleDC(NULL)
一个HBITMAP
。 (后者产生一个32位位图的句柄。)
然后,我使用SelectObject
将创build的位图select到内存DC中。
最后,我使用PlayEnhMetaFile
将包含透明区域的增强图元文件绘制到内存DC中。
我没有PlayEnhMetaFile
经验,但你可以用AlphaBlend
绘制带有Alpha通道的内存DC
inline BOOL AlphaBlt(HDC hDC, int x, int y, int cx, int cy, HDC hSrcDC, int xSrc, int ySrc, int cxSrc, int cySrc) { static BLENDFUNCTION bf = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA}; return AlphaBlend(hDC, x, y, cx, cy, hSrcDC, xSrc, ySrc, cxSrc, cySrc, bf); }
希望有所帮助。