首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-09-07 
请问下32位图的AlphaBlend的显示问题?void doDrawBitmap(CBitmap* pBitmap, CWnd* pWindow, CPoint Offset

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

热点排行