共用方式為


drvGradientFill 函式 (winddi.h)

DrvGradientFill 函式會著色指定的基本類型。

語法

BOOL DrvGradientFill(
  [in, out]      SURFOBJ   *psoDest,
  [in]           CLIPOBJ   *pco,
  [in, optional] XLATEOBJ  *pxlo,
  [in]           TRIVERTEX *pVertex,
  [in]           ULONG     nVertex,
  [in]           PVOID     pMesh,
  [in]           ULONG     nMesh,
  [in]           RECTL     *prclExtents,
  [in]           POINTL    *pptlDitherOrg,
  [in]           ULONG     ulMode
);

參數

[in, out] psoDest

SURFOBJ 結構的指標,可識別要繪製的介面。

[in] pco

CLIPOBJ 結構的指標。 系統會提供 CLIPOBJ_Xxx 服務例程,將 剪輯區域 列舉為一組矩形。 此列舉會限制已修改之目的地的區域。 可能的話,GDI 會簡化相關的裁剪。

[in, optional] pxlo

XLATEOBJ 結構的指標。 驅動程式應該忽略此參數。

[in] pVertex

TRIVERTEX 結構的陣列指標,每個專案都包含位置和色彩資訊。 TRIVERTEX 結構會在 Microsoft Windows SDK 檔中說明。

[in] nVertex

指定 pVertex 指向之陣列中的 TRIVERTEX 結構數目。

[in] pMesh

結構的陣列指標,定義 pVertex 所指向之 TRIVERTEX 元素的連線能力。

繪製矩形時, pMesh 會指向GRADIENT_RECT 結構的陣列,每個都會指定兩個定義矩形的TEX元素。 TRIVERTEX 元素可以代表任何對角相反的矩形頂點配對。 矩形繪圖的右下角是獨佔的。 TRIVERTEX 和GRADIENT_RECT都是在 Windows SDK 檔中定義。

繪製三角形時, pMesh 會指向GRADIENT_TRIANGLE 結構的陣列,其中每一個都會指定定義三角形的三個 TRIVERTEX 元素。 三角形繪圖是右下角的獨佔。 GRADIENT_TRIANGLE定義於 Windows SDK 檔中。

[in] nMesh

指定 pMesh 指向之陣列中的項目數目。

[in] prclExtents

RECTL 結構的指標,定義要在其中發生漸層繪圖的區域。 這些點是在目的地介面的座標系統中指定。 此參數在估計繪圖作業的大小時很有用。

[in] pptlDitherOrg

POINTL 結構的指標,該結構會定義表面的原點以進行 dithering。 dither 圖樣左上方的圖元會與這個點對齊。

[in] ulMode

指定目前的繪圖模式,以及如何解譯 pMesh 指向的陣列。 此參數可以是下列其中一個值:

GRADIENT_FILL_RECT_H

pMesh 參數指向GRADIENT_RECT 結構的陣列。 每個矩形都是由左至右著色。 具體而言,左上方和左下角圖元的色彩相同,與右上方和右下圖元相同。

GRADIENT_FILL_RECT_V

pMesh 參數指向GRADIENT_RECT 結構的陣列。 每個矩形都是從上到下著色。 具體而言,左上角和右上方圖元的色彩相同,與左下和右下圖元相同。

GRADIENT_FILL_TRIANGLE

pMesh 參數會指向GRADIENT_TRIANGLE結構的陣列。

每個模式的 漸層填滿 計算記載於一節中。

傳回值

DrvGradientFill 會在成功時傳回 TRUE 。 否則,它會傳回 FALSE ,並藉由呼叫 EngSetLastError 回報錯誤。

備註

DrvGradientFill 可以在圖形驅動程式中選擇性地實作。 GDI 永遠不會針對平板表面呼叫此函式。

驅動程式會在呼叫 EngAssociateSurfaceEngModifySurface 時設定HOOK_GRADIENTFILL旗標,以攔截 DrvGradientFill。 如果驅動程式已攔截 DrvGradientFill 並呼叫 來執行不支援的作業,驅動程式應該透過在 呼叫EngGradientFill中標點數據,讓該驅動程式擁有 GDI 處理作業。

GDI 不會針對 8bpp 目的地表面呼叫 DrvGradientFill

計算基本類型每個圖元色彩值的公式取決於 ulMode ,如下所示:

所有三個色彩色板累積的總錯誤不能超過八個 (8 個) 。 如需允許錯誤的詳細資訊,請參閱 顯示驅動程式中的特殊效果

驅動程式應該忽略頂點的Alpha值,讓支援Alpha混合的介面維持Alpha色板不變。

規格需求

需求
目標平台 桌面
標頭 winddi.h (包含Winddi.h)

另請參閱

EngAssociateSurface

EngGradientFill