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

渐变停止点的颜色。

备注

如果渐变停止点位于不同的位置,则可以按任何顺序指定。 两个站点可能共享一个位置。 在这种情况下,指定的第一个停止被视为“低”停止 (接近 0.0f) ,后续停止被视为“更高” (接近 1.0f) 。 如果调用方希望在停止中间进行即时转换,则此行为非常有用。

通常,集合中至少有两个点,但只允许创建一个停止点。 例如,一个点位于位置 0.0f,另一个点位于位置 1.0f,其他点分布在 [0, 1] 范围内。 如果渐变进度超出 [0, 1] 范围,则存储停止,但可能会影响渐变。

绘制时,[0, 1] 范围的位置以与画笔相关的方式映射到画笔。 有关详细信息,请参阅 ID2D1LinearGradientBrushID2D1RadialGradientBrush

无法显式看到位于 [0, 1] 范围之外的渐变停止,但它们仍会影响在 [0, 1] 范围内生成的颜色。 例如,双点渐变 {{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、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
标头 d2d1.h

另请参阅

画笔概述

CreateGradientStopCollection

如何创建线性渐变画笔

如何创建径向渐变画笔

ID2D1GradientStopCollection

ID2D1LinearGradientBrush

ID2D1RadialGradientBrush