//调用函数 CRect re; m_glob.GetClientRect(re); DrawTransparentBitmap(m_glob.GetDC(),IDB_BITMAP1,re,RGB(0,0,0));
//绘制函数 /* 这是一个用来画透明位图的函数 CDC *pDC 需要画位图的CDC指针 UINT IDImage 位图资源ID CRect &rect 指定位图在pDC中的位置 COLORREF rgbMask 位图的透明色 */ void DrawTransparentBitmap(CDC *pDC, UINT IDImage,CRect &rect, COLORREF rgbMask) { CDC ImageDC,MaskDC;
CBitmap Image,*pOldImage; CBitmap maskBitmap,*pOldMaskDCBitmap ;
Image.LoadBitmap(IDImage); ImageDC.CreateCompatibleDC(pDC); pOldImage=ImageDC.SelectObject(&Image);
MaskDC.CreateCompatibleDC(pDC); maskBitmap.CreateBitmap( rect.Width(), rect.Height(), 1, 1, NULL ); pOldMaskDCBitmap = MaskDC.SelectObject( &maskBitmap );
ImageDC.SetBkColor(rgbMask); MaskDC.BitBlt( 0, 0, rect.Width(), rect.Height(), &ImageDC, 0, 0, SRCCOPY );
ImageDC.SetBkColor(RGB(0,0,0)); ImageDC.SetTextColor(RGB(255,255,255)); ImageDC.BitBlt(0, 0, rect.Width(), rect.Height(), &MaskDC, 0, 0, SRCAND);
pDC->BitBlt(rect.left,rect.top,rect.Width(), rect.Height(), &MaskDC, 0, 0, SRCAND); pDC->BitBlt(rect.left,rect.top,rect.Width(), rect.Height(), &ImageDC, 0, 0,SRCPAINT);
MaskDC.SelectObject(pOldMaskDCBitmap); ImageDC.SelectObject(pOldImage); } 可以自由更改..... 
|