使用PlayEnhMetaFile绘制带有Alpha通道的增强型图元文件

我试图将包含透明区域的增强图元转换为仅使用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); } 

希望有所帮助。