您的位置:首页 > 其它

自定义MFC透明位图函数

2012-12-23 10:08 239 查看
自己搞的,需要的同学可以直接拿去用。

bool CFIRView::transBitmap(UINT bitmapID,COLORREF color,int x,int y)
{         //UINT bitmapID   位图资源ID
          //COLORREF color  设置要透明的 颜色
       //int x,int y  贴图位置
          CBitmap mBitmap,mMask;
          CDC *pDC,bitmapDC,maskDC;
          BITMAP bm;
          pDC=GetDC();
          bitmapDC.CreateCompatibleDC(pDC);
          maskDC.CreateCompatibleDC(pDC);
	  mBitmap.LoadBitmap(bitmapID);
          mBitmap.GetBitmap(&bm);
          mMask.CreateBitmap(bm.bmWidth,bm.bmHeight,1,1,NULL);
          bitmapDC.SelectObject(mBitmap);
          maskDC.SelectObject(mMask);
          bitmapDC.SetBkColor(color);
          	 
	  maskDC.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&bitmapDC,0,0,SRCCOPY);
	  pDC->BitBlt(x,y,bm.bmWidth,bm.bmHeight,&bitmapDC,0,0,SRCINVERT);
	  pDC->BitBlt(x,y,bm.bmWidth,bm.bmHeight,&maskDC,0,0,SRCAND);
	  pDC->BitBlt(x,y,bm.bmWidth,bm.bmHeight,&bitmapDC,0,0,SRCINVERT);  
          bitmapDC.DeleteDC();  
          maskDC.DeleteDC();     
      

return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: