图片的效果问题!(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);
}
*/ 

posted @ 2006-11-21 21:21  巨巨  阅读(116)  评论(0编辑  收藏  举报