Win32 API 日本語リファレンス
ホームGraphics.Direct2D › ID2D1GradientStopCollection

ID2D1GradientStopCollection

COM
IID2cd906a7-12e2-11dc-9fed-001143a055f9継承元ID2D1Resource自前メソッド開始 vtbl4

公式ドキュメント

線形および放射状のグラデーションブラシで使用する D2D1_GRADIENT_STOP オブジェクトのコレクションを表します。

解説(Remarks)

ID2D1GradientStopCollection オブジェクトの作成

ID2D1GradientStopCollection を作成するには、ID2D1RenderTarget::CreateGradientStopCollection メソッドを使用します。

グラデーションストップコレクションはデバイス依存のリソースです。アプリケーションは、グラデーションストップコレクションを使用するレンダーターゲットを初期化した後にグラデーションストップコレクションを作成し、レンダーターゲットの再作成が必要になったときには、そのたびにグラデーションストップコレクションも再作成する必要があります。(リソースの詳細については、リソースの概要を参照してください。)

次の例では、グラデーションストップの配列を作成し、それを使用して ID2D1GradientStopCollection を作成します。

// グラデーションブラシで使用するグラデーションストップコレクションに
// 格納するグラデーションストップの配列を作成します。
ID2D1GradientStopCollection *pGradientStops = NULL;

D2D1_GRADIENT_STOP gradientStops[2];
gradientStops[0].color = D2D1::ColorF(D2D1::ColorF::Yellow, 1);
gradientStops[0].position = 0.0f;
gradientStops[1].color = D2D1::ColorF(D2D1::ColorF::ForestGreen, 1);
gradientStops[1].position = 1.0f;
// 事前に宣言された D2D1_GRADIENT_STOP 構造体の配列から
// ID2D1GradientStopCollection を作成します。
hr = m_pRenderTarget->CreateGradientStopCollection(
    gradientStops,
    2,
    D2D1_GAMMA_2_2,
    D2D1_EXTEND_MODE_CLAMP,
    &pGradientStops
    );

次のコード例では、ID2D1GradientStopCollection を使用して ID2D1LinearGradientBrush を作成します。

// グラデーションの方向を決定する線は、正方形の左上隅から始まり
// 右下隅で終わります。

if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateLinearGradientBrush(
        D2D1::LinearGradientBrushProperties(
            D2D1::Point2F(0, 0),
            D2D1::Point2F(150, 150)),
        pGradientStops,
        &m_pLinearGradientBrush
        );
}

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 4 DWORD GetGradientStopCount()

コレクション内のグラデーションストップの数を取得します。

戻り値

型: UINT32

コレクション内のグラデーションストップの数。

vtbl 5 void GetGradientStops(D2D1_GRADIENT_STOP* gradientStops, DWORD gradientStopsCount)

コレクションからグラデーションストップを D2D1_GRADIENT_STOP 構造体の配列にコピーします。

gradientStopsD2D1_GRADIENT_STOP*outD2D1_GRADIENT_STOP 構造体の 1 次元配列へのポインター。このメソッドが返るとき、配列にはコレクションのグラデーションストップのコピーが格納されます。この配列のメモリはアプリケーション側で確保する必要があります。
gradientStopsCountDWORDinコピーするグラデーションストップの数を示す値。この値がコレクション内のグラデーションストップの数より小さい場合、残りのグラデーションストップは省略されます。この値がコレクション内のグラデーションストップの数より大きい場合、余分なグラデーションストップは NULL に設定されます。コレクション内のグラデーションストップの数を取得するには、GetGradientStopCount メソッドを使用します。

解説(Remarks)

グラデーションストップは位置の順にコピーされます。最も小さい位置の値を持つグラデーションストップから始まり、最も大きい位置の値を持つグラデーションストップへと進みます。

vtbl 6 D2D1_GAMMA GetColorInterpolationGamma()

グラデーションストップが補間されるガンマ空間を示します。

戻り値

型: D2D1_GAMMA

グラデーションストップが補間されるガンマ空間。

vtbl 7 D2D1_EXTEND_MODE GetExtendMode()

正規化されたグラデーション範囲の外側でのグラデーションの動作を示します。

戻り値

型: D2D1_EXTEND_MODE

[0,1] に正規化されたグラデーション範囲の外側でのグラデーションの動作。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID2D1GradientStopCollection "{2CD906A7-12E2-11DC-9FED-001143A055F9}"
#usecom global ID2D1GradientStopCollection IID_ID2D1GradientStopCollection "{}"
#comfunc global ID2D1GradientStopCollection_GetGradientStopCount        4
#comfunc global ID2D1GradientStopCollection_GetGradientStops            5 var,int
#comfunc global ID2D1GradientStopCollection_GetColorInterpolationGamma  6
#comfunc global ID2D1GradientStopCollection_GetExtendMode               7
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。