图片的效果问题!(1)
/*功能说明:将hForBMP透明地贴到hBgBMP上
参数说明:CDC *pdc--要显示图片的设备
CRect rect--要显示图片的矩形区域
int x,int y---hForBMP在hBgBMP的左上角的位置
HBITMAP hBgBMP--背景图片的句柄
HBITMAP hForBMP--前景图片的句柄
图片要求:前景图片由左半部分和右半部分组成,右半部分是其蒙版效果部分.
原理;将蒙版部分与背景图进行与操作,然后将实体部分与背景图进行或操作的结果.
声明:void TransparentBMP(CDC *pdc,CRect rect,int x,int y,HBITMAP hBgBMP,HBITMAP hForBMP);
*/
TransparentBMP(CDC *pdc,CRect rect,int x,int y, HBITMAP hBgBMP, HBITMAP hForBMP)
{
CDC memdc;
memdc.CreateCompatibleDC(pdc);
CBitmap* pBitmap=CBitmap::FromHandle(hBgBMP);
memdc.SelectObject(pBitmap);
pdc->BitBlt(0,0,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
pBitmap=CBitmap::FromHandle(hForBMP);
BITMAP bm;
pBitmap->GetBitmap(&bm);
memdc.SelectObject(pBitmap);
pdc->BitBlt(x,y,bm.bmWidth/2,bm.bmHeight,&memdc,bm.bmWidth/2,0,SRCAND);
pdc->BitBlt(x,y,bm.bmWidth/2,bm.bmHeight,&memdc,0,0,SRCPAINT);
}
/*调用示例:
void CTouMingView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
m_dra=(HBITMAP)LoadImage(NULL,"res//dra.bmp",IMAGE_BITMAP,170,99,LR_LOADFROMFILE);
m_hBg=(HBITMAP)LoadImage(NULL,"res//bg.bmp",IMAGE_BITMAP,600, 450,LR_LOADFROMFILE);
TransparentBMP(&dc,CRect(0,0,600,450),280,320,m_hBg,m_dra);
}
*/