请问下32位图的AlphaBlend的显示问题?
void doDrawBitmap(CBitmap* pBitmap, CWnd* pWindow, CPoint Offset) const
{
// get bitmap information
BITMAP bmpInfo;
pBitmap->GetObject(sizeof(bmpInfo), &bmpInfo);
// get size
CSize size;
size.cx = bmpInfo.bmWidth;
size.cy = bmpInfo.bmHeight;
// get window's client device context
CClientDC* pDC = new CClientDC(pWindow);
// create memory device context
CDC* memDC = new CDC;
memDC->CreateCompatibleDC(pDC);
// buffer bitmap
CBitmap* old = memDC->SelectObject(pBitmap);
BLENDFUNCTION rBlendProps;
rBlendProps.BlendOp = AC_SRC_OVER;
rBlendProps.BlendFlags = 0;
rBlendProps.AlphaFormat = AC_SRC_ALPHA;
rBlendProps.SourceConstantAlpha = 255;
BOOL bRet = pDC->AlphaBlend(Offset.x, Offset.y, size.cx, size.cy, memDC, 0, 0, size.cx, size.cy, rBlendProps);
// reselect first bitmap
memDC->SelectObject(old);
// delete device context and reset pointer
delete memDC; memDC = 0;
// delete device context and reset pointer
delete pDC; pDC = 0;
}
pBitmap是获取png的rgba 组成的32位位图?
我用上面绘制一个带ALPHA的位图怎么结果是背景是白色的的!
有人知道怎么回事呀?
[解决办法]
rBlendProps.AlphaFormat = AC_SRC_ALPHA;
改为:
rBlendProps.AlphaFormat = 0;