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

时间:2012-02-27 15:09:16

标签: c++ windows winapi gdi

我正在尝试仅使用GDI函数将包含透明区域的增强型图元转换为32位图。这有可能获得正确的alpha值吗?

以下导致32位位图,每个像素的alpha值设置为0:

首先,我使用CreateCompatibleDC(NULL)检索到的屏幕DC,使用HBITMAP创建一个内存DC,使用CreateCompatibleBitmap创建GetDC(NULL)。 (后者生成32位位图的句柄。)

然后我使用SelectObject将创建的位图选择到内存DC中。

最后,我使用PlayEnhMetaFile将包含透明区域的增强型图元文件绘制到内存DC中。

1 个答案:

答案 0 :(得分:1)

我没有使用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);
}

希望有所帮助。