D2D1_GRADIENT_STOP 構造体 (d2d1.h)

グラデーションの分岐点の位置と色を格納します。

構文

typedef struct D2D1_GRADIENT_STOP {
  FLOAT        position;
  D2D1_COLOR_F color;
} D2D1_GRADIENT_STOP;

メンバー

position

型: FLOAT

ブラシ内のグラデーションの点の相対位置を示す 値です。 グラデーションの分岐点が明示的に表示される場合、この値は [0.0f, 1.0f] の範囲内である必要があります。

color

種類: D2D1_COLOR_F

グラデーション境界の色。

解説

グラデーションの分岐点は、異なる位置にある場合は任意の順序で指定できます。 2 つのストップが 1 つの位置を共有する場合があります。 この場合、指定された最初の停止は "低" ストップ (0.0f に近い) として扱われ、後続の停止は "より高い" (1.0f に近い) として扱われます。 この動作は、呼び出し元が停止の途中で瞬時に切り替える必要がある場合に便利です。

通常、コレクションには少なくとも 2 つのポイントがありますが、1 つのストップのみを使用した作成が許可されます。 たとえば、1 つのポイントが位置 0.0f、別のポイントが 1.0f の位置にあり、追加のポイントが [0, 1] の範囲内に分散されます。 グラデーションの進行が [0, 1] の範囲を超える場合、ストップは格納されますが、グラデーションに影響を与える可能性があります。

描画すると、[0, 1] の位置の範囲がブラシに依存する方法でブラシにマップされます。 詳細については、「 ID2D1LinearGradientBrush 」および 「ID2D1RadialGradientBrush」を参照してください。

[0, 1] の範囲外の位置を持つグラデーションの分岐点は明示的に表示できませんが、[0, 1] の範囲で生成される色に影響を与える可能性があります。 たとえば、2 点グラデーション {{0.0f、Black}、{2.0f、White}} は、{{0.0f、Black}、{1.0f、Mid-level gray}} と視覚的に区別できません。 また、色は補間の前にクランプされます。

次の例では、グラデーション分岐点の配列を作成し、それらを使用して ID2D1GradientStopCollection を作成します。

// Create an array of gradient stops to put in the gradient stop
// collection that will be used in the gradient brush.
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;
// Create the ID2D1GradientStopCollection from a previously
// declared array of D2D1_GRADIENT_STOP structs.
hr = m_pRenderTarget->CreateGradientStopCollection(
    gradientStops,
    2,
    D2D1_GAMMA_2_2,
    D2D1_EXTEND_MODE_CLAMP,
    &pGradientStops
    );

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

// The line that determines the direction of the gradient starts at
// the upper-left corner of the square and ends at the lower-right corner.

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

要件

   
サポートされている最小のクライアント Windows 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
Header d2d1.h

関連項目

ブラシの概要

CreateGradientStopCollection

線形グラデーション ブラシを作成する方法

放射状グラデーション ブラシを作成する方法

ID2D1GradientStopCollection

ID2D1LinearGradientBrush

ID2D1RadialGradientBrush