鏤空圖(透明遮罩效果)需兩步光柵運算:
// 取得客戶區大小
CRect rect;
GetClientRect(&rect);
// 建立相容記憶體 DC
CDC memDC;
memDC.CreateCompatibleDC(pDC);
// 載入背景圖與人物圖(含遮罩,左右並排)
CBitmap bgBmp, manBmp;
bgBmp.m_hObject = (HBITMAP)::LoadImage(nullptr, L"b1.bmp", IMAGE_BITMAP,
rect.right, rect.bottom, LR_LOADFROMFILE);
manBmp.m_hObject = (HBITMAP)::LoadImage(nullptr, L"man.bmp", IMAGE_BITMAP,
208, 154, LR_LOADFROMFILE);
// 1. 繪製背景
memDC.SelectObject(bgBmp);
pDC->BitBlt(0, 0, rect.right, rect.bottom, &memDC, 0, 0, SRCCOPY);
// 2. 遮罩 AND 操作(假設遮罩在圖片右半部 104x154)
memDC.SelectObject(manBmp);
pDC->BitBlt(250, 150, 104, 154, &memDC, 104, 0, SRCAND);
// 3. 前景 OR 操作(左半部為實際圖像)
pDC->BitBlt(250, 150, 104, 154, &memDC, 0, 0, SRCPAINT);
man.bmp 寬 208 像素:左 104 像素為彩色圖像,右 104 像素為單色遮罩(白=透明,黑=不透明)SRCAND:目標 = 目標 AND 來源 → 遮罩黑處保留背景,白處清零SRCPAINT:目標 = 目標 OR 來源 → 將前景色填入先前清零區域此技巧廣泛用於 2D 遊戲精靈渲染、UI 非矩形視窗等場景。