我正在尝试将包含透明区域的增强型图元文件转换为仅使用GDI函数的32位位图。这有可能得到正确的alpha值吗?
下面生成一个32位位图,每个像素的alpha值设置为0:
首先,我使用CreateCompatibleDC(NULL)创建了一个内存DC,使用CreateCompatibleBitmap创建了一个HBITMAP,使用GetDC(NULL)检索到了屏幕DC。(后者生成32位位图的句柄。)
然后我使用SelectObject将创建的位图选择到内存DC中。
最后,我使用PlayEnhMetaFile将包含透明区域的增强型图元文件绘制到内存DC中。
发布于 2012-02-28 18:18:18
我没有使用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);
}希望这能有所帮助。
https://stackoverflow.com/questions/9467290
复制相似问题