DrvBitBlt 函式 (winddi.h)
DrvBitBlt 函式提供裝置管理介面、GDI 管理標準格式位圖之間的一般位區塊傳輸功能,或在裝置管理的介面與 GDI 管理的標準格式位圖之間。
語法
BOOL DrvBitBlt(
[in, out] SURFOBJ *psoTrg,
[in, optional] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMask,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in] RECTL *prclTrg,
[in, optional] POINTL *pptlSrc,
[in, optional] POINTL *pptlMask,
[in, optional] BRUSHOBJ *pbo,
[in, optional] POINTL *pptlBrush,
[in] ROP4 rop4
);
參數
[in, out] psoTrg
描述要繪製表面之 SURFOBJ 結構的指標。
[in, optional] psoSrc
如果 rop4 參數需要,描述位區塊傳輸作業來源的 SURFOBJ 結構指標。
[in, optional] psoMask
SURFOBJ 結構的指標,描述要當做 rop4 參數遮罩使用的表面。 遮罩是每圖元 1 位的點陣圖。 一般而言,遮罩是用來限制目的地介面中要修改的區域。 將 rop4 參數設定為值0xAACC來選取遮罩。 如果遮罩0x0000,則目的地表面不會受到影響。
遮罩會夠大,足以涵蓋目的地矩形。
如果此參數為 NULL ,且 rop4 參數需要遮罩,則會使用筆刷中的隱含遮罩。
[in] pco
CLIPOBJ 結構的指標,該結構會限制要修改的區域。 GDI 服務 (CLIPOBJXxx) ,其中會提供將 剪輯區域 列舉為一組矩形。 可能的話,GDI 可簡化涉及的裁剪;例如,永遠不會使用單一裁剪矩形呼叫此函式。 GDI 會先裁剪目的地矩形,再呼叫此函式,因此不需要進行額外的裁剪。
[in, optional] pxlo
XLATEOBJ 結構的指標,指定來源和目的地介面之間應該如何轉譯色彩索引。 如果 pxlo 為 NULL,則不需要翻譯。
如果來源表面是調色盤管理的,其色彩會以索引表示為 RGB 值的查閱表格。 您可以查詢 XLATEOBJ 結構,以取得可讓設備驅動器將任何來源索引轉譯為目的地色彩索引的轉譯向量。
例如,來源是 RGB,但目的地是調色盤管理的比較複雜。 在此情況下,必須在目的地選擇區中找到最接近每個來源 RGB 值的相符專案。 驅動程式可以呼叫 XLATEOBJ_iXlate 服務來執行這項作業。
或者,當目標調色盤是預設裝置調色盤時,設備驅動器可以比對色彩。
[in] prclTrg
RECTL 結構的指標,定義要修改的區域。 這個結構會使用目的地介面的座標系統。 這個矩形的下邊緣和右邊緣不是位區塊傳輸的一部分,這表示矩形是右下角獨佔的。
DrvBitBlt 永遠不會使用空的目的地矩形呼叫。 定義矩形的兩個點一律會妥善排序。 不過,在多監視系統上,矩形可能會定義大於目的地介面的區域。 驅動程式應該與其表面交集此矩形。
[in, optional] pptlSrc
如果來源存在,則定義來源矩形左上角的 POINTL 結構的指標。 如果沒有來源,則會忽略此參數。
[in, optional] pptlMask
POINTL 結構的指標,定義如果來源存在,遮罩中的像素對應至來源矩形的左上角。 如果 psoMask 參數為 NULL,則會忽略此參數。
[in, optional] pbo
BRUSHOBJ 結構的指標,定義位區塊傳輸的模式。 GDI 的BRUSHOBJ_pvGetRbrush 服務可用來擷取裝置的筆刷實現。 如果 rop4 參數不需要模式,則會忽略此參數。
[in, optional] pptlBrush
POINTL 結構的指標,定義目的地介面中的筆刷原點。 筆刷的左上方像素此時對齊,而筆刷會根據其維度重複。 如果 rop4 參數不需要模式,則會忽略此參數。
[in] rop4
指定點陣作業,定義遮罩、圖樣、來源和目的地圖元的結合方式,以寫入目的地介面。
這是四元數點陣運算,這是三元 Rop3 運算的延伸。 Rop4 有 16 個相關位,類似於 Rop3 的 8 個定義位。 實作 Rop4 的最簡單方式是個別考慮其 2 個字節:低位元組會指定 Rop3,如果遮罩為 0,則高位元組會指定可計算並套用的 Rop3。
傳回值
如果位區塊傳輸作業成功,DrvBitBlt 會傳回 TRUE 。 否則,函式會傳回 FALSE,並記錄錯誤碼。
備註
如果驅動程式攔截 DrvBitBlt,GDI會在需要執行 BitBlt 作業時呼叫此函式,其中其中一個介面是裝置管理的介面。 如果驅動程序實作不透明裝置管理的點陣圖,它必須攔截 DrvBitBlt;否則,攔截 DrvBitBlt 是選擇性的。 如果驅動程式無法處理指定的呼叫,它可能會藉由呼叫 EngBitBlt 來標點 DIB 引擎的回呼。
GDI 的 CLIPOBJXxx 服務可讓裁剪縮減為一系列的裁剪矩形。 轉譯向量可協助調色盤的色彩索引轉譯。
如果驅動程式收到此函式的呼叫,其中 rop4 參數設定為 0XCCAA,驅動程式應該將呼叫標點至 EngBitBlt,並公開裝置介面, () 適當地針對呼叫公開裝置介面。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | winddi.h (包括 Winddi.h) |