读书人

请教上32位图的AlphaBlend的显示有关问

发布时间: 2012-09-07 10:38:15 作者: rapoo

请问下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;

读书人网 >VC/MFC

热点推荐