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