typedef struct D2D1_GRADIENT_STOP {
FLOAT position;
D2D1_COLOR_F color;
} D2D1_GRADIENT_STOP;
- position: 定义渐变停止的位置,是一个浮点数,表示从 0.0 到 1.0 的范围。0.0 表示渐变的起始点,1.0 表示渐变的结束点。
- color: 定义渐变停止的颜色,是一个 D2D1_COLOR_F 结构体,表示颜色的 RGBA 值。
使用 GradientStop 结构体,你可以指定渐变中每个停止点的位置和颜色,从而创建渐变画刷。以下是一个简单的示例:
ID2D1RenderTarget* pRenderTarget = /* 获取RenderTarget的方式 */;
// 定义渐变停止
D2D1_GRADIENT_STOP gradientStops[] = {
{ 0.0f, D2D1::ColorF(D2D1::ColorF::Red) },
{ 0.5f, D2D1::ColorF(D2D1::ColorF::Yellow) },
{ 1.0f, D2D1::ColorF(D2D1::ColorF::Green) }
};
// 创建渐变停止集合
ID2D1GradientStopCollection* pGradientStops = NULL;
pRenderTarget->CreateGradientStopCollection(
gradientStops,
ARRAYSIZE(gradientStops),
&pGradientStops
);
// 使用渐变停止集合创建线性渐变画刷
ID2D1LinearGradientBrush* pLinearGradientBrush = NULL;
pRenderTarget->CreateLinearGradientBrush(
D2D1::LinearGradientBrushProperties(D2D1::Point2F(0.0f, 0.0f), D2D1::Point2F(200.0f, 0.0f)),
D2D1::BrushProperties(),
pGradientStops,
&pLinearGradientBrush
);
// 使用渐变画刷绘制图形
pRenderTarget->BeginDraw();
pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
pRenderTarget->DrawRectangle(D2D1::RectF(10.0f, 10.0f, 100.0f, 100.0f), pLinearGradientBrush);
pRenderTarget->EndDraw();
// 释放资源
pGradientStops->Release();
pLinearGradientBrush->Release();
在这个示例中,gradientStops 数组定义了三个渐变停止点,分别对应红色、黄色和绿色。通过这些渐变停止点,创建了一个线性渐变画刷,并用它绘制了一个矩形。
转载请注明出处:http://www.zyzy.cn/article/detail/25446/Win32 API/D2d1helper.h/GradientStop