MaskBlt 函式 (wingdi.h)

MaskBlt 函式會使用指定的遮罩和點陣作業,結合來源和目的地點陣的色彩數據。

語法

BOOL MaskBlt(
  [in] HDC     hdcDest,
  [in] int     xDest,
  [in] int     yDest,
  [in] int     width,
  [in] int     height,
  [in] HDC     hdcSrc,
  [in] int     xSrc,
  [in] int     ySrc,
  [in] HBITMAP hbmMask,
  [in] int     xMask,
  [in] int     yMask,
  [in] DWORD   rop
);

參數

[in] hdcDest

目的地裝置內容的句柄。

[in] xDest

目的地矩形左上角的 X 座標,以邏輯單位表示。

[in] yDest

目的地矩形左上角的 Y 座標,以邏輯單位表示。

[in] width

目的地矩形和來源位圖的寬度,以邏輯單位表示。

[in] height

目的地矩形和來源位圖的高度,以邏輯單位表示。

[in] hdcSrc

要從中複製位圖之裝置內容的句柄。 如果 dwRop 參數指定不包含來源的點陣作業,它就必須是零。

[in] xSrc

來源位圖左上角的 X 座標,以邏輯單位表示。

[in] ySrc

來源位圖左上角的 Y 座標,以邏輯單位表示。

[in] hbmMask

單色遮罩位圖的句柄,結合來源裝置內容中的色彩點陣圖。

[in] xMask

hbmMask 參數所指定遮罩位圖的水準圖元位移。

[in] yMask

hbmMask 參數所指定遮罩位圖的垂直圖元位移。

[in] rop

函式用來控制來源和目的地數據組合 (ROP) 前景和背景三元點陣作業程序代碼。 背景點陣作業程式代碼會儲存在此值高序單字的高序位元組中;前景點陣作業程序代碼會以此值高序單字的低序位元組儲存;忽略這個值的低序字組,而且應該是零。 宏 MAKEROP4 建立前景和背景點陣作業程式代碼的這類組合。

如需此函式內容中前景和背景的討論,請參閱下列一節。

如需一般點陣作業代碼的清單, (ROP) ,請參閱 BitBlt 函式。 請注意,CAPTUREBLT ROP 通常無法用於列印裝置內容。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。

備註

MaskBlt 函式會使用裝置相依點陣圖。

hbmMask 所指定遮罩中的值 1 表示應該在該位置套用 dwRop 所指定的前景點陣作業程序代碼。 遮罩中的值 0 表示 dwRop 所指定的背景點陣作業程式代碼應該套用到該位置。

如果點陣作業需要來源,遮罩矩形必須涵蓋來源矩形。 如果沒有,函式將會失敗。 如果點陣作業不需要來源,遮罩矩形必須涵蓋目的矩形。 如果沒有,函式將會失敗。

如果呼叫此函式時,來源裝置內容的旋轉或變換轉換生效,就會發生錯誤。 不過,允許其他類型的轉換。

如果來源、圖樣和目的地位圖的色彩格式不同,此函式會轉換模式或來源格式,或兩者都符合目的格式。

如果遮罩位圖不是單色位圖,就會發生錯誤。

記錄增強型元檔時,如果來源裝置內容識別增強型元檔裝置內容,就會 (發生錯誤,且函式會傳回 FALSE) 。

並非所有裝置都支援 MaskBlt 函式。 應用程式應該使用 nIndex 參數呼叫 GetDeviceCaps 函式作為RC_BITBLT,以判斷裝置是否支援此函式。

如果未提供遮罩位圖,則此函式的行為與 BitBlt 完全相同,使用前景點陣作業程序代碼。

Icm: Blits 發生時不會執行色彩管理。

在多個監視器系統中使用時, hdcSrchdcDest 都必須參考相同的裝置,否則函式將會失敗。 若要在不同裝置的 DC 之間傳輸數據,請呼叫 GetDIBits,將記憶體位圖 (相容的點陣圖或 DDB) 轉換成 DIB。 若要向第二個裝置顯示 DIB,請呼叫 SetDIBitsStretchDIBits

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h (包含 Windows.h)
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱

BitBlt

點陣圖函式

位圖概觀

GetDIBits

GetDeviceCaps

PlgBlt

SetDIBits

StretchBlt

StretchDIBits