HBITMAP hbm,hMayi,maskBitmap; HDC dchbm,dcmayi,dcmask; //dc=CreateCompatibleDC(hDC); //创建兼容设备环境 dchbm=CreateCompatibleDC(hDC); dcmayi=CreateCompatibleDC(hDC); dcmask=CreateCompatibleDC(hDC); maskBitmap=CreateBitmap(800,600, 1, 1, NULL); ;//创建存放图象的显示缓 //载入位图 hbm=(HBITMAP)LoadImage(g_pGE->GetInstance(),"ditu.bmp",IMAGE_BITMAP,800,600,LR_LOADFROMFILE); hMayi=(HBITMAP)LoadImage(g_pGE->GetInstance(),"mayi.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE); SelectObject(dchbm,hbm); //将位图选入设备环境 SelectObject(dcmayi,hMayi); //将位图选入设备环境 SelectObject( dcmask,maskBitmap ); //设置前景图的背景色 SetBkColor(dcmask, RGB(255,255,255)); RECT rect; GetClientRect(hWnd,&rect); HBRUSH hbrush; hbrush=(HBRUSH)CreateSolidBrush(RGB(255,255,255)); FillRect(dcmask,&rect,hbrush); //设置前景图的背景色 COLORREF clrTrans; clrTrans=GetPixel(dcmayi,2, 2); SetBkColor(dcmayi,clrTrans); //将前景图拷贝到maskDc BitBlt(dcmask,0,0,100,100, dcmayi, 0,0,SRCCOPY); // //前景图与mask做‘与’运算 SetBkColor(dcmayi, RGB(0,0,0)); SetTextColor(dcmayi, RGB(255,255,255)); BitBlt(dcmayi, 0, 0,100,100, dcmask, 0, 0, SRCAND); //背景图与mask做‘与’运算 SetBkColor(dchbm, RGB(255,255,255)); SetTextColor(dchbm, RGB(0,0,0)); BitBlt(dchbm, 0, 0,800,600, dcmask, 0, 0, SRCAND); // //背景图与前景图做‘或’运算 BitBlt(dchbm, 0, 0,100,100 , dcmayi,0,0, SRCPAINT); BitBlt(hDC,0,0,800,600 ,dchbm,0,0,SRCCOPY); 蒙版法:其它方法效果不好,这个方法要用图像处理,有点麻烦,将来用一下,不过效果不好!