ID2D1GradientStopCollection 接口是与 Direct2D 中的渐变停止集合相关的接口。在 Win32 API 中,它通常用于处理渐变效果。以下是该接口的一些基本信息:

ID2D1GradientStopCollection 接口简介:

ID2D1GradientStopCollection 接口是 Direct2D 中表示渐变停止集合的接口。这个接口包含一组渐变停止,这些渐变停止用于在渐变中指定颜色的变化。

头文件:
#include <d2d1.h>

声明:
interface ID2D1GradientStopCollection : public ID2D1Resource
{
    STDMETHOD_(UINT32, GetGradientStopCount)(
        ) CONST PURE;

    STDMETHOD_(void, GetGradientStops)(
        D2D1_GRADIENT_STOP * gradientStops,
        UINT32 gradientStopsCount
        ) CONST PURE;

    STDMETHOD_(D2D1_GAMMA, GetColorInterpolationGamma)(
        ) CONST PURE;

    STDMETHOD_(D2D1_EXTEND_MODE, GetExtendMode)(
        ) CONST PURE;
};

主要方法:

1. GetGradientStopCount:
   - 描述:获取渐变停止的数量。
   - 参数:无。
   - 返回值:返回渐变停止的数量。

2. GetGradientStops:
   - 描述:获取渐变停止的数组。
   - 参数:
     - gradientStops: 用于存储渐变停止的数组。
     - gradientStopsCount: 数组的大小。
   - 返回值:无。

3. GetColorInterpolationGamma:
   - 描述:获取颜色插值的伽玛值。
   - 参数:无。
   - 返回值:返回伽玛值,例如 D2D1_GAMMA_2_2。

4. GetExtendMode:
   - 描述:获取渐变停止的扩展模式。
   - 参数:无。
   - 返回值:返回扩展模式,例如 D2D1_EXTEND_MODE_CLAMP。

示例用法:
// 创建渐变停止集合
ID2D1GradientStopCollection* gradientStopCollection = nullptr;
D2D1_GRADIENT_STOP gradientStops[] = { { 0.0f, D2D1::ColorF(D2D1::ColorF::Red) },
                                      { 1.0f, D2D1::ColorF(D2D1::ColorF::Blue) } };

HRESULT hr = renderTarget->CreateGradientStopCollection(
    gradientStops,
    ARRAYSIZE(gradientStops),
    D2D1_GAMMA_2_2,
    D2D1_EXTEND_MODE_CLAMP,
    &gradientStopCollection
);

// 使用渐变停止集合绘制
if (SUCCEEDED(hr))
{
    renderTarget->FillRectangle(D2D1::RectF(0, 0, 100, 100), gradientStopCollection);
}

// 释放资源
if (gradientStopCollection)
{
    gradientStopCollection->Release();
}

请注意,上述代码中的 renderTarget 是 ID2D1RenderTarget 接口的实例,用于渲染图形。这只是一个简单的示例,实际应用中可能需要更复杂的渐变效果。


转载请注明出处:http://www.pingtaimeng.com/article/detail/25265/Win32 API/D2d1.h/ID2D1GradientStopCollection