ID2D1DeviceContext::CreateGradientStopCollection 方法 (d2d1_1.h)

创建渐变停止集合,使渐变包含值超出 [0,1] 的颜色通道,还允许在 sRGB 空间中使用内插呈现到高色呈现目标。

语法

HRESULT CreateGradientStopCollection(
        const D2D1_GRADIENT_STOP      *straightAlphaGradientStops,
        UINT32                        straightAlphaGradientStopsCount,
        D2D1_COLOR_SPACE              preInterpolationSpace,
        D2D1_COLOR_SPACE              postInterpolationSpace,
        D2D1_BUFFER_PRECISION         bufferPrecision,
        D2D1_EXTEND_MODE              extendMode,
        D2D1_COLOR_INTERPOLATION_MODE colorInterpolationMode,
  [out] ID2D1GradientStopCollection1  **gradientStopCollection1
);

参数

straightAlphaGradientStops

类型: const D2D1_GRADIENT_STOP*

颜色值和偏移量的数组。

straightAlphaGradientStopsCount

类型: UINT

gradientStops 数组中的元素数。

preInterpolationSpace

类型: D2D1_COLOR_SPACE

指定输入颜色空间和颜色内插发生的空间。

postInterpolationSpace

类型: D2D1_COLOR_SPACE

颜色在内插发生后将转换为的颜色空间。

bufferPrecision

类型: D2D1_BUFFER_PRECISION

用于保存内插值的纹理的精度。

注意 如果基础 Direct3D 设备不支持请求的缓冲区精度,则此方法将失败。 使用 ID2D1DeviceContext::IsBufferPrecisionSupported 确定支持的内容。
 

extendMode

类型: D2D1_EXTEND_MODE

定义如何确定由停止集合定义的范围以外的颜色。

colorInterpolationMode

类型: D2D1_COLOR_INTERPOLATION_MODE

定义颜色的内插方式。 D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED为默认值,有关详细信息,请参阅备注。

[out] gradientStopCollection1

类型: ID2D1GradientStopCollection1**

新的渐变停止集合。

返回值

类型: HRESULT

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

HRESULT 说明
S_OK 未发生错误。
E_OUTOFMEMORY Direct2D 无法分配足够的内存来完成调用。
E_INVALIDARG 传递给 方法的值无效。

注解

此方法在颜色停止点之间线性内插。 可选的颜色空间转换在内插后应用。 是否应用此伽玛转换以及应用方式取决于前内插和后内插。 如果设备上下文不支持请求的缓冲区精度,此方法将失败。

若要获得所需的结果,需要确保在正确的颜色空间中指定输入。

无论内插模式是预乘还是直插,都必须始终以直 alpha 指定颜色。 内插模式仅影响内插值。 同样, ID2D1GradientStopCollection::GetGradientStops 返回的 stops 将始终具有直 alpha。

如果指定 D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED,则所有停止在内插之前都是预乘的,然后在颜色转换之前取消乘法。

从Windows 8开始,此方法的内插行为已更改。

此处的表显示了 Windows 7 及更早版本中的行为。

Gamma 内插前行为 内插后行为 GetColorInteroplationGamma (输出颜色空间)
1.0 固定输入,然后从 sRGB 转换为 scRGB。 从 scRGB 转换为 sRGB 后内插。 1.0
2.2 固定输入。 无操作 2.2
 

此处的表显示了 Windows 8 及更高版本中的行为。

Gamma 内插前行为 内插后行为 GetColorInteroplationGamma (输出颜色空间)
sRGB 到 scRGB 无操作 固定输出,然后从 sRGB 转换为 scRGB。 1.0
scRGB 到 sRGB 无操作 固定输出,然后从 sRGB 转换为 scRGB。 2.2
sRGB 到 sRGB 无操作 无操作 2.2
scRGB 到 scRGB 无操作 无操作 1.0

要求

要求
最低受支持的客户端 适用于 Windows Vista 的Windows 8和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 适用于 Windows Server 2008 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1_1.h
DLL D2d1.dll

另请参阅

D2D1_BUFFER_PRECISION

D2D1_EXTEND_MODE

D2D1_GAMMA_CONVERSION

D2D1_GRADIENT_STOP

ID2D1DeviceContext

ID2D1GradientStopCollection1

ID2D1RenderTarget::CreateGradientStopCollection