BitBlt 函式 (wingdi.h)

BitBlt 函式會執行與指定來源裝置內容圖元矩形相對應的色彩數據位區塊傳輸至目的地裝置內容。

語法

BOOL BitBlt(
  [in] HDC   hdc,
  [in] int   x,
  [in] int   y,
  [in] int   cx,
  [in] int   cy,
  [in] HDC   hdcSrc,
  [in] int   x1,
  [in] int   y1,
  [in] DWORD rop
);

參數

[in] hdc

目的地裝置內容的句柄。

[in] x

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

[in] y

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

[in] cx

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

[in] cy

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

[in] hdcSrc

來源裝置內容的句柄。

[in] x1

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

[in] y1

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

[in] rop

點陣作業程序代碼。 這些程式代碼會定義來源矩形的色彩數據如何與目的地矩形的色彩數據結合,以達到最終色彩。

下列清單顯示一些常見的點陣作業程序代碼。

意義
黑暗
使用實體調色盤中索引 0 相關聯的色彩填滿目的矩形。 (在預設實體調色盤中,此色彩為黑色)。
CAPTUREBLT
包含結果影像中視窗頂端的任何視窗。 根據預設,影像只會包含您的視窗。 請注意,這一般不能用於列印裝置内容。
DSTINVERT
反轉目的矩形。
MERGECOPY
使用布爾值 AND 運算符,將來源矩形的色彩與目前在 hdcDest 中選取的筆刷合併。
MERGEPAINT
使用布爾值 OR 運算符,將反轉來源矩形的色彩與目的地矩形的色彩合併。
NOMIRRORBITMAP
防止點圖進行鏡像。
NOTSRCCOPY
將反向來源矩形複製到目的地。
NOTSRCERASE
使用布爾值 OR 運算子結合來源和目的矩形的色彩,然後反轉結果色彩。
PATCOPY
將目前在 hdcDest 中選取的筆刷複製到目的地點陣圖中。
PATINVERT
結合目前在 hdcDest 中選取的筆刷色彩,以及使用布爾 XOR 運算子的目的地矩形色彩。
PATPAINT
結合目前在 hdcDest 中選取的筆刷色彩,以及使用布爾值 OR 運算符來反轉來源矩形的色彩。 此作業的結果會與目的矩形的色彩結合,方法是使用布爾值 OR 運算元。
SRCAND
使用布爾值 AND 運算符,結合來源和目的地矩形的色彩。
SRCCOPY
將來源矩形直接複製到目的地矩形。
SRCERASE
使用布爾值 AND 運算符,結合目的地矩形的反轉色彩與來源矩形的色彩。
SRCINVERT
使用布爾 XOR 運算子結合來源和目的地矩形的色彩。
SRCPAINT
使用布爾值 OR 運算子結合來源和目的地矩形的色彩。
使用實體調色盤中索引 1 相關聯的色彩填滿目的矩形。 (此色彩為預設實體調色盤的白色)。

傳回值

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

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

BitBlt 只會在目的地 DC 上進行裁剪。

如果旋轉或變換轉換在來源裝置內容中生效, BitBlt 會 傳回錯誤。 如果來源裝置內容中有其他轉換 (,且相符的轉換在目的地裝置內容中沒有作用) ,則目的地裝置內容中的矩形會視需要延展、壓縮或旋轉。

如果來源和目的地裝置內容的色彩格式不相符, BitBlt 函式會將來源色彩格式轉換為符合目的地格式。

記錄增強型元檔時,如果來源裝置內容識別增強型元檔裝置內容,就會發生錯誤。

並非所有裝置都支援 BitBlt 函式。 如需詳細資訊,請參閱 GetDeviceCaps 函式中的RC_BITBLT點陣功能專案,以及下列函式: MaskBltPlgBltStretchBlt

如果來源和目的地裝置內容代表不同的裝置,BitBlt 會傳回錯誤。 若要在不同裝置的 DC 之間傳輸數據,請呼叫 GetDIBits,將記憶體位圖轉換成 DIB。 若要向第二個裝置顯示 DIB,請呼叫 SetDIBitsStretchDIBits

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

範例

下列程式代碼範例示範 BitBlt 的使用。

if (!BitBlt(hdcMemDC,
    0, 0,
    rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
    hdcWindow,
    0, 0,
    SRCCOPY))
{
    MessageBox(hWnd, L"BitBlt has failed", L"Failed", MB_OK);
    goto done;
}

若要在內容中查看此範例,請參閱 擷取影像

規格需求

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

另請參閱

點陣圖函式

位圖概觀

GetDIBits

GetDeviceCaps

MaskBlt

PlgBlt

SetDIBits

StretchBlt

StretchDIBits