鈥婱FC涓璗ransparentBlt鍑芥暟鎬庝箞浣跨敤
TransparentBlt鍑芥暟鐢ㄤ簬鍦ㄨ澶囦笂涓嬫枃涓粯鍒跺甫鏈夐€忔槑鏁堟灉鐨勫浘鍍忋€?/p>
鍑芥暟鍘熷瀷锛?/p>
BOOL TransparentBlt(
HDC hdcDest,
int xoriginDest,
int yoriginDest,
int wDest,
int hDest,
HDC hdcSrc,
int xoriginSrc,
int yoriginSrc,
int wSrc,
int hSrc,
UINT crTransparent
);
鍙傛暟璇存槑锛?/p>
- hdcDest锛氱洰鏍囪澶囦笂涓嬫枃鐨勫彞鏌勩€?/li>
- xoriginDest锛氱洰鏍囩煩褰㈠尯鍩熺殑宸︿笂瑙掔殑x鍧愭爣銆?/li>
- yoriginDest锛氱洰鏍囩煩褰㈠尯鍩熺殑宸︿笂瑙掔殑y鍧愭爣銆?/li>
- wDest锛氱洰鏍囩煩褰㈠尯鍩熺殑瀹藉害銆?/li>
- hDest锛氱洰鏍囩煩褰㈠尯鍩熺殑楂樺害銆?/li>
- hdcSrc锛氭簮璁惧涓婁笅鏂囩殑鍙ユ焺銆?/li>
- xoriginSrc锛氭簮鐭╁舰鍖哄煙鐨勫乏涓婅鐨剎鍧愭爣銆?/li>
- yoriginSrc锛氭簮鐭╁舰鍖哄煙鐨勫乏涓婅鐨剏鍧愭爣銆?/li>
- wSrc锛氭簮鐭╁舰鍖哄煙鐨勫搴︺€?/li>
- hSrc锛氭簮鐭╁舰鍖哄煙鐨勯珮搴︺€?/li>
- crTransparent锛氶€忔槑棰滆壊鍊笺€備笌婧愬浘鍍忎腑棰滆壊鐩稿悓鐨勫儚绱犲皢琚涓洪€忔槑銆?/li>
浣跨敤绀轰緥锛?/p>
CImage image;
image.Load(_T("path/to/image.png"));
CDC* pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, image.GetWidth(), image.GetHeight());
memDC.SelectObject(&bmp);
memDC.BitBlt(0, 0, image.GetWidth(), image.GetHeight(), pDC, 0, 0, SRCCOPY);
image.BitBlt(memDC.GetSafeHdc(), 0, 0, SRCCOPY);
TransparentBlt(pDC->GetSafeHdc(), x, y, width, height, memDC.GetSafeHdc(), 0, 0, image.GetWidth(), image.GetHeight(), RGB(255, 0, 255));
ReleaseDC(pDC);
浠ヤ笂绀轰緥涓紝棣栧厛鍔犺浇鍥惧儚鏂囦欢鍒癈Image瀵硅薄涓紝鐒跺悗鍒涘缓涓€涓吋瀹圭殑鍐呭瓨璁惧涓婁笅鏂囧拰浣嶅浘瀵硅薄锛屽皢浣嶅浘瀵硅薄閫夊叆璁惧涓婁笅鏂囷紝浣跨敤BitBlt鍑芥暟灏嗗睆骞曚笂鐨勫浘鍍忓鍒跺埌鍐呭瓨璁惧涓婁笅鏂囦腑锛岀劧鍚庝娇鐢˙itBlt鍑芥暟灏嗗浘鍍忕粯鍒跺埌鍐呭瓨璁惧涓婁笅鏂囦腑锛屾渶鍚庝娇鐢═ransparentBlt鍑芥暟灏嗗唴瀛樿澶囦笂涓嬫枃涓殑鍥惧儚缁樺埗鍒板睆骞曚笂鐨勭洰鏍囪澶囦笂涓嬫枃涓紝骞舵寚瀹氶€忔槑棰滆壊銆?/p>