ID2D1LinearGradientBrush 接口是 Direct2D 中表示线性渐变画刷的接口。它允许在渲染目标上绘制使用线性渐变填充的图形。以下是该接口的一些基本信息:

ID2D1LinearGradientBrush 接口简介:

ID2D1LinearGradientBrush 接口是 Direct2D 中表示线性渐变画刷的接口。线性渐变画刷使用两个端点之间的线段定义渐变的方向和颜色变化。

头文件:
#include <d2d1.h>

声明:
interface ID2D1LinearGradientBrush : public ID2D1Brush
{
    STDMETHOD_(void, SetStartPoint)(
        D2D1_POINT_2F startPoint
        ) PURE;

    STDMETHOD_(void, SetEndPoint)(
        D2D1_POINT_2F endPoint
        ) PURE;

    STDMETHOD_(D2D1_POINT_2F, GetStartPoint)(
        ) CONST PURE;

    STDMETHOD_(D2D1_POINT_2F, GetEndPoint)(
        ) CONST PURE;
};

主要方法:

1. SetStartPoint:
   - 描述:设置线性渐变的起始点。
   - 参数:
     - startPoint: 渐变的起始点坐标。
   - 返回值:无。

2. SetEndPoint:
   - 描述:设置线性渐变的结束点。
   - 参数:
     - endPoint: 渐变的结束点坐标。
   - 返回值:无。

3. GetStartPoint:
   - 描述:获取线性渐变的起始点。
   - 参数:无。
   - 返回值:返回 D2D1_POINT_2F 结构,表示渐变的起始点坐标。

4. GetEndPoint:
   - 描述:获取线性渐变的结束点。
   - 参数:无。
   - 返回值:返回 D2D1_POINT_2F 结构,表示渐变的结束点坐标。

示例用法:
// 创建线性渐变画刷
ID2D1LinearGradientBrush* linearGradientBrush = 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),
    &gradientStopCollection
);

if (SUCCEEDED(hr))
{
    D2D1_POINT_2F startPoint = D2D1::Point2F(0.0f, 0.0f);
    D2D1_POINT_2F endPoint = D2D1::Point2F(100.0f, 100.0f);

    hr = renderTarget->CreateLinearGradientBrush(
        D2D1::LinearGradientBrushProperties(
            startPoint,
            endPoint
        ),
        gradientStopCollection,
        &linearGradientBrush
    );
}

// 在渲染目标上使用线性渐变画刷绘制图形
if (SUCCEEDED(hr))
{
    renderTarget->FillRectangle(D2D1::RectF(10.0f, 10.0f, 200.0f, 150.0f), linearGradientBrush);
}

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

if (gradientStopCollection)
{
    gradientStopCollection->Release();
}

上述代码中的 renderTarget 是 ID2D1RenderTarget 接口的实例,而 gradientStopCollection 是 ID2D1GradientStopCollection 接口的实例。此示例演示了如何创建线性渐变画刷,并在渲染目标上使用该画刷填充矩形。在实际应用中,可以根据需要调整渐变的起始点、结束点以及渐变的颜色停止点。


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