ID2D1DeviceContext::CreateGradientStopCollection 方法 (d2d1_1.h)

建立漸層停駐點集合,讓漸層包含值在 [0,1] 以外的色彩通道,並啟用在 sRGB 空間中插入的高色彩轉譯目標。

語法

HRESULT CreateGradientStopCollection(
        const D2D1_GRADIENT_STOP      *straightAlphaGradientStops,
        UINT32                        straightAlphaGradientStopsCount,
        D2D1_COLOR_SPACE              preInterpolationSpace,
        D2D1_COLOR_SPACE              postInterpolationSpace,
        D2D1_BUFFER_PRECISION         bufferPrecision,
        D2D1_EXTEND_MODE              extendMode,
        D2D1_COLOR_INTERPOLATION_MODE colorInterpolationMode,
  [out] ID2D1GradientStopCollection1  **gradientStopCollection1
);

參數

straightAlphaGradientStops

類型: const D2D1_GRADIENT_STOP*

色彩值和位移的陣列。

straightAlphaGradientStopsCount

類型: UINT

gradientStops 陣列中的項目數目。

preInterpolationSpace

類型: D2D1_COLOR_SPACE

指定輸入色彩空間和發生色彩插補的空間。

postInterpolationSpace

類型: D2D1_COLOR_SPACE

發生插補之後,色彩要轉換成的色彩空間。

bufferPrecision

類型: D2D1_BUFFER_PRECISION

用來保存內插值之紋理的有效位數。

注意 如果基礎 Direct3D 裝置不支援要求的緩衝區精確度,這個方法將會失敗。 使用 ID2D1DeviceContext::IsBufferPrecisionSupported 來判斷支持的內容。
 

extendMode

類型: D2D1_EXTEND_MODE

定義決定停止集合所定義範圍外色彩的方式。

colorInterpolationMode

類型: D2D1_COLOR_INTERPOLATION_MODE

定義色彩的插補方式。 D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED是預設值,如需詳細資訊,請參閱。

[out] gradientStopCollection1

類型: ID2D1GradientStopCollection1**

新的漸層停駐點集合。

傳回值

類型: HRESULT

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

HRESULT 描述
S_OK 未發生任何錯誤。
E_OUTOFMEMORY Direct2D 無法配置足夠的記憶體來完成呼叫。
E_INVALIDARG 無效的值已傳遞至 方法。

備註

這個方法會在色彩停駐點之間以線性方式插補。 選擇性的色彩空間轉換會在插補後套用。 套用此 Gamma 轉換的方式是否取決於插補前和后插補點。 如果裝置內容不支援要求的緩衝區有效位數,這個方法將會失敗。

若要取得所需的結果,您必須確定輸入是在正確的色彩空間中指定。

不論內插補點模式為預先乘法或直線,您都必須一律以直線 Alpha 指定色彩。 插補模式只會影響插補值。 同樣地, ID2D1GradientStopCollection::GetGradientStops 所傳回的停止一律會有直接 Alpha。

如果您指定 D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED,則所有停止都會在插補之前預先乘以,然後在色彩轉換之前取消預乘。

從 Windows 8 開始,這個方法的內插補點行為已變更。

下表顯示 Windows 7 和更早版本中的行為。

色差補正 在插補行為之前 插補行為之後 GetColorInteroplationGamma (輸出色彩空間)
1.0 限制輸入,然後從 sRGB 轉換為 scRGB。 從 scRGB 轉換為 sRGB 后插補點。 1.0
2.2 限制輸入。 無作業 2.2
 

下表顯示 Windows 8和更新版本中的行為。

色差補正 在插補行為之前 插補行為之後 GetColorInteroplationGamma (輸出色彩空間)
sRGB 至 scRGB 無作業 限制輸出,然後從 sRGB 轉換為 scRGB。 1.0
scRGB 至 sRGB 無作業 限制輸出,然後從 sRGB 轉換為 scRGB。 2.2
sRGB 至 sRGB 無作業 無作業 2.2
scRGB 至 scRGB 無作業 無作業 1.0

規格需求

需求
最低支援的用戶端 適用於 Windows Vista 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 適用於 Windows Server 2008 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d2d1_1.h
Dll D2d1.dll

另請參閱

D2D1_BUFFER_PRECISION

D2D1_EXTEND_MODE

D2D1_GAMMA_CONVERSION

D2D1_GRADIENT_STOP

ID2D1DeviceContext

ID2D1GradientStopCollection1

ID2D1RenderTarget::CreateGradientStopCollection