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 無効な値が メソッドに渡されました。

注釈

このメソッドは、カラー ストップ間を直線的に補間します。 オプションの色空間変換は、補間後に適用されます。 このガンマ変換を適用するかどうかと適用方法は、事前補間と後補間によって決まります。 デバイス コンテキストが要求されたバッファー精度をサポートしていない場合、このメソッドは失敗します。

目的の結果を取得するには、入力が正しい色空間で指定されていることを確認する必要があります。

補間モードが事前乗算または直線であるかどうかにかかわらず、常に直線アルファで色を指定する必要があります。 補間モードは補間値にのみ影響します。 同様に、 ID2D1GradientStopCollection::GetGradientStops によって返されるストップは、常に直線アルファになります。

D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIEDを指定した場合、補間の前にすべてのストップが事前に乗算され、色変換の前にプリマルチプライが解除されます。

Windows 8以降、このメソッドの補間動作が変更されました。

次の表は、Windows 7 以前の動作を示しています。

Gamma 補間前の動作 補間後の動作 GetColorInteroplationGamma (出力色空間)
1.0 入力をクランプし、sRGB から scRGB に変換します。 scRGB から sRGB ポスト補間に変換します。 1.0
2.2 入力をクランプします。 操作は実行されません 2.2
 

次の表は、Windows 8 以降の動作を示しています。

Gamma 補間前の動作 補間後の動作 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