drvStretchBltROP 函式 (winddi.h)
DrvStretchBltROP 函式會使用 ROP 執行延展位區塊傳輸。
語法
BOOL DrvStretchBltROP(
[in, out] SURFOBJ *psoDest,
[in, out] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMask,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in, optional] COLORADJUSTMENT *pca,
[in] POINTL *pptlHTOrg,
[in] RECTL *prclDest,
[in] RECTL *prclSrc,
[in, optional] POINTL *pptlMask,
[in] ULONG iMode,
[in] BRUSHOBJ *pbo,
[in] DWORD rop4
);
參數
[in, out] psoDest
SURFOBJ 結構的指標,描述要繪製的介面。
[in, out] psoSrc
SURFOBJ 結構的指標,描述位區塊傳輸的來源介面。
[in, optional] psoMask
定義來源遮罩之 SURFOBJ 結構的指標。 遮罩是由邏輯對應所定義,這是每個圖元一個位的點陣圖。 一般而言,遮罩會限制在目的地介面中修改的區域。 此遮罩的大小一律與來源表面相同。
[in] pco
CLIPOBJ 結構的指標,限制在目的地中修改區域。 系統會提供 CLIPOBJ_Xxx 服務例程,將 剪輯區域 列舉為一組矩形。
可能的話,GDI 會簡化相關的裁剪。 不過,不同於 DrvBitBlt,您可以使用單一裁剪矩形呼叫 DrvStretchBltROP 。 這可防止裁剪輸出時發生捨入錯誤。
[in, optional] pxlo
XLATEOBJ 結構的指標,指定如何在來源和目標表面之間轉譯色彩索引。 如果 pxlo 為 NULL,則不需要翻譯。
您也可以查詢這個 XLATEOBJ 結構,以尋找任何來源索引的 RGB 色彩。 在某些情況下,高品質的延展位區塊傳輸需要插補色彩。
[in, optional] pca
COLORADJUSTMENT 結構的指標,定義要套用至來源位圖的色彩調整值,再延展位。 如需詳細資訊,請參閱 Microsoft Windows SDK 檔。
[in] pptlHTOrg
POINTL 結構的指標,定義目的地介面上半色調筆刷的原點。 使用半色調筆刷時,驅動程式應該對齊筆刷的左上方圖元與這個點,並根據其尺寸重複筆刷。 如果 rop4 參數不需要模式,驅動程式應該忽略此參數。
[in] prclDest
RECTL 結構的指標,定義要修改的矩形區域。 這個矩形是在目的地介面的座標系統中指定,並由兩個點定義:左上方和右下角。 定義矩形的兩個點不一定是妥善排序的,這表示第二個點的座標不一定大於第一個點的座標。 如果目的地矩形順序不正確,驅動程式應該交換兩個 x 值和/或兩 個 y 值。
矩形的右下角是獨佔的;也就是說,其下邊緣和右邊緣不是複本的一部分。
DrvStretchBltROP 永遠不會使用空的目的地矩形來呼叫。
[in] prclSrc
RECTL 結構的指標,定義要複製的區域。 這個矩形是在來源介面的座標系統中指定,並由兩個點定義:左上方和右下角。 定義矩形的兩個點一律會妥善排序。
矩形的右下角是獨佔的;也就是說,其下邊緣和右邊緣不是複本的一部分。
驅動程式應該將此矩形對應至 中國lDest 所定義的矩形。
[in, optional] pptlMask
POINTL 結構的指標,該結構定義 中國Mask 所指向之遮罩中的圖元。 此像素會對應至 中國lSrc 指向的來源矩形左上方圖元。 如果未指定遮罩,驅動程式應該忽略此參數。
[in] iMode
指定如何結合來源圖元以取得輸出圖元。 HALFTONE 模式比其他模式慢,但會產生高品質的影像。 此參數可以是下列其中一個值:
值 | 意義 |
---|---|
BLACKONWHITE | 在壓縮位區塊傳輸上,圖元應該與布爾值 AND 作業結合。 在延展位區塊傳輸上,應該復寫圖元。 |
COLORONCOLOR | 在壓縮位區塊傳輸上,應該忽略足夠的圖元,因此不需要合併圖元。 在延展位區塊傳輸上,應該復寫圖元。 |
半 色調 | 驅動程式可以使用輸出介面中的圖元群組,以最接近輸入的色彩或灰色層級。 |
WHITEONBLACK | 在壓縮位區塊傳輸上,圖元應該與布爾值 OR 作業結合。 在延展位區塊傳輸上,應該復寫圖元。 |
[in] pbo
用於定義位區塊傳輸模式的 BRUSHOBJ 結構的指標。 GDI 的 BRUSHOBJ_pvGetRbrush 服務例程會擷取裝置的筆刷實現。 如果 rop4 參數不需要模式,驅動程式可以忽略此參數。
[in] rop4
表示點陣作業,定義如何結合遮罩、圖樣、來源和目的地圖元,以將輸出圖元寫入目的地表面。
這是四元數點陣運算,這是一般三元 Rop3 作業的自然延伸。 Rop4 有 16 個相關位,類似於 Rop3 的 8 個定義位。 (會忽略 Rop3 的其他備援位。) 實作 Rop4 的最簡單方式是分別考慮其 2 個字節。 下層位元組會指定 Rop3,應該在 psoMask 點為 1 的遮罩位置計算。 高位元組會指定 Rop3,可在遮罩為零的位置計算和套用。
傳回值
DrvStretchBltROP 應該會在成功時傳回 TRUE 。 否則,它應該會報告錯誤碼並傳回 FALSE。
備註
對應是由 中國lSrc 和 中國lDest 所定義。 中國Dest 和中國lSrc 中指定的點位於對應於圖元中心的整數座標上。 由兩個這類點定義的矩形會被視為具有兩個頂點的幾何矩形,其座標是指定的點,但每個座標都會減去0.5。 (POINTL 結構是用來指定這些小數座標頂點的速記表示法。)
驅動程式可以選擇性地實作 DrvStretchBltROP。 如果驅動程式確實攔截此呼叫,它可以呼叫 EngStretchBltROP 來執行不支援的延展 blit 作業。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | winddi.h (包含Winddi.h) |