在MFC中,CImage類提供了TransparentBlt函數來進行透明位圖的繪制。TransparentBlt函數的原型如下:
BOOL TransparentBlt(
HDC hdcDest, // 目標設備上下文句柄
int xDest, // 目標矩形左上角的x坐標
int yDest, // 目標矩形左上角的y坐標
int nDestWidth, // 目標矩形的寬度
int nDestHeight, // 目標矩形的高度
HDC hdcSrc, // 源設備上下文句柄
int xSrc, // 源矩形左上角的x坐標
int ySrc, // 源矩形左上角的y坐標
int nSrcWidth, // 源矩形的寬度
int nSrcHeight, // 源矩形的高度
UINT crTransparent // 透明顏色
);
參數說明:
使用示例:
// 創建目標設備上下文
HDC hdcDest = ::GetDC(m_hWnd);
// 創建源設備上下文
HDC hdcSrc = ::CreateCompatibleDC(hdcDest);
// 加載源位圖
CImage imgSrc;
imgSrc.Load(_T("source.bmp"));
// 將源位圖選入源設備上下文
HBITMAP hBmpOld = (HBITMAP)::SelectObject(hdcSrc, imgSrc);
// 繪制透明位圖
TransparentBlt(hdcDest, 0, 0, nDestWidth, nDestHeight, hdcSrc, xSrc, ySrc, nSrcWidth, nSrcHeight, crTransparent);
// 恢復源設備上下文
::SelectObject(hdcSrc, hBmpOld);
// 釋放源設備上下文
::DeleteDC(hdcSrc);
// 釋放目標設備上下文
::ReleaseDC(m_hWnd, hdcDest);
需要注意的是,透明位圖是通過指定crTransparent參數來實現的,這個參數表示源位圖中要透明的顏色。在實際使用中,需要根據源位圖的具體情況來確定透明顏色的值。