drvStretchBlt 函式 (winddi.h)
DrvStretchBlt 函式提供任何裝置管理和 GDI 管理介面組合之間的延展位區塊傳輸功能。
語法
BOOL DrvStretchBlt(
[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, out] psoDest
SURFOBJ 結構的指標,可識別要繪製的介面。
[in, out] psoSrc
定義位區塊傳輸作業來源之 SURFOBJ 結構的指標。
[in, optional] psoMask
SURFOBJ 結構的選擇性指標,定義提供來源遮罩的介面。 遮罩是由邏輯對應所定義,這是每個圖元 1 位的點陣圖。
遮罩會限制複製的來源區域。 如果指定此參數,則會有隱含 的 rop4 0xCCAA,這表示應該在遮罩為 1 的位置複製來源,但目的地應該在遮罩為零的位置單獨保留。
當此參數為 NULL 時,有隱含 的 rop4 0xCCCC,這表示來源應該複製到來源矩形的任何地方。
遮罩一律夠大,足以包含相關的來源;不必要並排。
[in] pco
CLIPOBJ 結構的指標,限制在目的地中修改區域。 提供 GDI 服務以列舉 裁剪區域 作為一組矩形。
可能的話,GDI 會簡化相關的裁剪。 不過,不同於 DrvBitBlt,您可以使用單一裁剪矩形呼叫 DrvStretchBlt 。 這可防止裁剪輸出時發生捨入錯誤。
[in, optional] pxlo
XLATEOBJ 結構的指標,指定如何在來源和目標表面之間轉譯色彩索引。 如果 pxlo 為 NULL,則不需要翻譯。
您也可以查詢 XLATEOBJ 結構,以尋找任何來源索引的 RGB 色彩。 在某些情況下,高品質的延展位區塊傳輸需要插補色彩。
[in, optional] pca
COLORADJUSTMENT 結構的指標,定義要套用至來源位圖的色彩調整值,再延展位。 (請參閱 Microsoft Windows SDK documentation.)
[in] pptlHTOrg
POINTL 結構的指標,指定半色調筆刷的原點。 使用半色調筆刷的設備驅動器應該對齊筆刷圖樣左上方圖元與裝置介面上的這個點。
[in] prclDest
RECTL 結構的指標,定義目的地介面座標系統中要修改的區域。 此矩形是由兩個不一定妥善排序的點所定義,這表示第二個點的座標不一定大於第一個點的座標。 其描述的矩形不包含下邊緣和右邊緣。 此函式永遠不會使用空的目的地矩形呼叫。
DrvStretchBlt 應該在目的地矩形未妥善排序時交換兩 個 x 值和/或兩 個 y 值。
[in] prclSrc
RECTL 結構的指標,定義將在來源表面座標系統中複製的區域。 矩形是由兩個點所定義,而且會對應到 由中國lDest 定義的矩形。 來源矩形的點已妥善排序。 此函式絕不會提供空的來源矩形。
對應是由 中國lSrc 和 中國lDest 所定義。 中國Dest 和中國lSrc 中指定的點位於對應於圖元中心的整數座標上。 由兩個這類點定義的矩形會被視為具有兩個頂點的幾何矩形,其座標是指定的點,但每個座標都會減去0.5。 (POINTL 結構應視為指定這些小數座標頂點的速記表示法。)
任何矩形的邊緣永遠不會與像素交集,但會繞著一組圖元。 矩形內的圖元是「右下角獨佔」矩形的預期圖元。 DrvStretchBlt 會將幾何來源矩形完全對應到幾何目的地矩形。
[in, optional] pptlMask
POINTL 結構的指標,指定指定遮罩中的哪個像素對應至來源矩形中的左上方圖元。 如果未指定遮罩,請忽略此參數。
[in] iMode
指定如何結合來源圖元以取得輸出圖元。 HALFTONE 模式比其他模式慢,但會產生高品質的影像。
值 | 意義 |
---|---|
BLACKONWHITE | 在壓縮位區塊傳輸上,圖元應該與布爾值 AND 作業結合。 在延展位區塊傳輸上,應該復寫圖元。 |
COLORONCOLOR | 在壓縮位區塊傳輸上,應該忽略足夠的圖元,因此不需要合併圖元。 在延展位區塊傳輸上,應該復寫圖元。 |
半 色調 | 驅動程式可以使用輸出介面中的圖元群組,以最接近輸入的色彩或灰色層級。 |
WHITEONBLACK | 在壓縮位區塊傳輸上,圖元應該與布爾值 OR 作業結合。 在延展位區塊傳輸上,應該復寫圖元。 |
傳回值
如果函式成功,則傳回值為 TRUE 。 否則為 FALSE,並記錄錯誤碼。
備註
DrvStretchBlt 可讓設備驅動器寫入 GDI 位圖,特別是在驅動程式可以執行半角處理時。 此函式允許相同的半角演算法套用至 GDI 位圖和裝置表面。
您可以提供此函式,只處理特定形式的延展,例如整數倍數。 如果驅動程式已攔截呼叫並要求執行不支援的作業,驅動程式應該將數據轉送至 EngStretchBlt,GDI 才能處理。
如果驅動程式想要 GDI 處理半角處理,而且想要確保適當的 iMode 值,驅動程式可以攔截 DrvStretchBlt、將 iMode 設定為 HALFTONE,並使用設定的 iMode 值回呼 GDI 與 EngStretchBlt。
DrvStretchBlt 是顯示器驅動程式的選擇性選項。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | winddi.h (包含Winddi.h) |