16,471
社区成员
发帖
与我相关
我的任务
分享
CWnd *pWnd;
CDC *pDC;
BITMAP bmPerson,bmBackground;
pWnd=GetDlgItem(IDC_STATIC_SCENE);
pDC=pWnd->GetDC();
if(!(m_bmpPerson.LoadBitmap(IDB_BITMAP_PERSON)&&m_bmpBK.LoadBitmap(IDB_BITMAP_SCENE))) //加载图片
{
AfxMessageBox(L"Can not load the 2 pictures correctly!");
return ;
}
m_bmpPerson.GetObject(sizeof(bmPerson),&bmPerson);
m_bmpBK.GetObject(sizeof(bmBackground),&bmBackground);
dcPersonMask.CreateCompatibleDC(pDC) ;//生成CDC对象,创建与显示设备上下文兼容的内存设备上下文CDC对象
dcBK.CreateCompatibleDC(pDC);
dcPerson.CreateCompatibleDC(pDC);
m_PersonMaskBitmap.CreateBitmap(bmPerson.bmWidth,bmPerson.bmHeight,1,1,NULL);
CBitmap* OldPersonMaskBitmap = dcPersonMask.SelectObject(&m_PersonMaskBitmap);
CBitmap *oldPerson=dcPerson.SelectObject(&m_bmpPerson);//将位图对象选入创建的内存设备上下文
CBitmap *oldbackground=dcBK.SelectObject(&m_bmpBK);
COLORREF l_crOldBack=dcPerson.SetBkColor(RGB(0,0,0));
dcPersonMask.StretchBlt(0,0,bmPerson.bmWidth,bmPerson.bmHeight,&dcPerson,0,0,bmPerson.bmWidth,bmPerson.bmHeight,SRCCOPY);
dcPerson.SetBkColor(l_crOldBack);
dcBK.MaskBlt(x1,y1,bmPerson.bmWidth,bmPerson.bmHeight,&dcPerson,0,0,m_PersonMaskBitmap,0,0,ROP4_TRANSPARENTBLIT );
//显示图片
//pDC->StretchBlt(0,0,bmBackground.bmWidth,bmBackground.bmHeight,&dcBK,0,0,bmBackground.bmWidth,bmBackground.bmHeight,SRCCOPY);
pDC->TransparentBlt(0,0,bmBackground.bmWidth,bmBackground.bmHeight,&dcBK,0,0,bmBackground.bmWidth,bmBackground.bmHeight,RGB(255,255,255));
CWnd *pWnd;
CDC *pDC;
BITMAP bmPerson,bmBackground;
pWnd=GetDlgItem(IDC_STATIC_SCENE);
pDC=pWnd->GetDC();
if(!(m_bmpPerson.LoadBitmap(IDB_BITMAP_PERSON)&&m_bmpBK.LoadBitmap(IDB_BITMAP_SCENE))) //加载图片
{
AfxMessageBox(L"Can not load the 2 pictures correctly!");
return ;
}
m_bmpPerson.GetObject(sizeof(bmPerson),&bmPerson);
m_bmpBK.GetObject(sizeof(bmBackground),&bmBackground);
dcPersonMask.CreateCompatibleDC(pDC) ;//生成CDC对象,创建与显示设备上下文兼容的内存设备上下文CDC对象
dcBK.CreateCompatibleDC(pDC);
dcPerson.CreateCompatibleDC(pDC);
m_PersonMaskBitmap.CreateBitmap(bmPerson.bmWidth,bmPerson.bmHeight,1,1,NULL);
CBitmap* OldPersonMaskBitmap = dcPersonMask.SelectObject(&m_PersonMaskBitmap);
CBitmap *oldPerson=dcPerson.SelectObject(&m_bmpPerson);//将位图对象选入创建的内存设备上下文
CBitmap *oldbackground=dcBK.SelectObject(&m_bmpBK);
COLORREF l_crOldBack=dcPerson.SetBkColor(RGB(0,0,0));
dcPersonMask.StretchBlt(0,0,bmPerson.bmWidth,bmPerson.bmHeight,&dcPerson,0,0,bmPerson.bmWidth,bmPerson.bmHeight,SRCCOPY);
dcPerson.SetBkColor(l_crOldBack);
dcBK.MaskBlt(x1,y1,bmPerson.bmWidth,bmPerson.bmHeight,&dcPerson,0,0,m_PersonMaskBitmap,0,0,ROP4_TRANSPARENTBLIT );
//显示图片
//pDC->StretchBlt(0,0,bmBackground.bmWidth,bmBackground.bmHeight,&dcBK,0,0,bmBackground.bmWidth,bmBackground.bmHeight,SRCCOPY);
pDC->TransparentBlt(0,0,bmBackground.bmWidth,bmBackground.bmHeight,&dcBK,0,0,bmBackground.bmWidth,bmBackground.bmHeight,RGB(255,255,255));