读书人

对话框加载图片后多余部分如何变透明了

发布时间: 2012-01-21 21:31:43 作者: rapoo

对话框加载图片后多余部分怎么变透明了?
BITMAP bm;
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
m_pbmp = new CBitmap();
m_pbmp-> LoadBitmap(IDB_BITMAP1);

CBitmap *pBmpOld=(CBitmap *)dcMem.SelectObject(m_pbmp);
m_pbmp-> GetObject(sizeof(bm),(LPVOID)&bm);
CRect rcClient;
GetClientRect(rcClient);

pDC-> BitBlt(0,0,bm.bmWidth,
bm.bmHeight,
&dcMem,
0,0,
SRCCOPY);

dcMem.SelectObject(pBmpOld);
return TRUE;
运行后踱出来的对话框部分怎么变透明了?

[解决办法]
是在OnEraseBkgnd()里面吗?多出来的部分没有绘制,当然就透明了。可以先调用基类的OnEraseBkgnd
[解决办法]
pDC-> BitBlt(0,0,bm.bmWidth,
bm.bmHeight,
&dcMem,
0,0,
SRCCOPY);
不改变图片大小,要动态改变图片大小,用StretchBlt函数,楼主可以用
pDC-> StretchBlt(0,0,rcClient.Width(),
rcClient.Height(),
&dcMem,
0,0,
bm.bmWidth,
bm.bmHeight,
SRCCOPY);
试试!!!

读书人网 >VC/MFC

热点推荐