共用方式為


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 結構的指標,指定如何在來源和目標表面之間轉譯色彩索引。 如果 pxloNULL,則不需要翻譯。

您也可以查詢這個 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)

另請參閱

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt