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.zyzy.cn/article/detail/25269/Win32 API/D2d1.h/ID2D1LinearGradientBrush