伽玛传输效果
使用伽玛传输效果,使用你为每个通道提供的振幅、指数和偏移创建的 gamma 函数来映射图像的颜色强度。
此效果的 CLSID 是CLSID_D2D1GammaTransfer。 若要使用此效果,请将 dxguid.lib 添加到链接器依赖项。
示例图
之前 |
---|
之后 |
ComPtr<ID2D1Effect> gammaTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1GammaTransfer, &gammaTransferEffect);
gammaTransferEffect->SetInput(0, bitmap);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(gammaTransferEffect.Get());
m_d2dContext->EndDraw();
此效果基于此处的公式应用伽玛传递函数。
输入像素强度表示为 C,输出像素强度表示为 C'。 C' = Amplitude * C指数 + 偏移量
此效果适用于直的和预乘的 alpha 图像。 效果输出预乘 alpha 位图。
效果属性
注意
对于 gamma 传输属性的所有通道:
- 振幅值没有边界,并且是无单位的。
- 指数值没有边界,并且是无单位的。
- 偏移值没有边界,并且是无单位的。
显示名称和索引枚举 | 说明 |
---|---|
RedAmplitude D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE |
红色通道的伽玛传递函数的振幅。 类型为 FLOAT。 默认值为 1.0f。 |
RedExponent D2D1_GAMMATRANSFER_PROP_RED_EXPONENT |
红色通道的 gamma 传输函数的指数。 类型为 FLOAT。 默认值为 1.0f。 |
RedOffset D2D1_GAMMATRANSFER_PROP_RED_OFFSET |
红色通道的 gamma 传输函数的偏移量。 类型为 FLOAT。 默认值为 0.0f。 |
RedDisable D2D1_GAMMATRANSFER_PROP_RED_DISABLE |
如果将其设置为 TRUE,则不会将传输函数应用于 Red 通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将 gamma 传输函数应用于 Red 通道。 类型为 BOOL。 默认值是 FALSE。 |
GreenAmplitude D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE |
绿色通道的 gamma 传递函数的振幅。 类型为 FLOAT。 默认值为 1.0f。 |
GreenExponent D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT |
绿色通道的 gamma 传递函数的指数。 类型为 FLOAT。 默认值为 1.0f。 |
GreenOffset D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET |
绿色通道的 gamma 传输函数的偏移量。 类型为 FLOAT。 默认值为 0.0f。 |
GreenDisable D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE |
如果将其设置为 TRUE,则不会将传输函数应用于绿色通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将 gamma 传输函数应用于绿色通道。 类型为 BOOL。 默认值是 FALSE。 |
BlueAmplitude D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE |
Blue 通道的 gamma 传递函数的振幅。 类型为 FLOAT。 默认值为 1.0f。 |
BlueExponent D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT |
Blue 通道的 gamma 传递函数的指数。 类型为 FLOAT。 默认值为 1.0f。 |
BlueOffset D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET |
Blue 通道的 gamma 传输函数的偏移量。 类型为 FLOAT。 默认值为 0.0f。 |
BlueDisable D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE |
如果将其设置为 TRUE,则不会将传输函数应用于 Blue 通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将 gamma 传输函数应用于 Blue 通道。 类型为 BOOL。 默认值是 FALSE。 |
AlphaAmplitude D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE |
alpha 通道的 gamma 传递函数的振幅。 类型为 FLOAT。 默认值为 1.0f。 |
AlphaExponent D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT |
alpha 通道的 gamma 传递函数的指数。 类型为 FLOAT。 默认值为 1.0f。 |
AlphaOffset D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET |
alpha 通道的 gamma 传递函数的偏移量。 类型为 FLOAT。 默认值为 0.0f。 |
AlphaDisable D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE |
如果将其设置为 TRUE,则不会将传输函数应用于 alpha 通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将 gamma 传输函数应用于 alpha 通道。 类型为 BOOL。 默认值是 FALSE。 |
ClampOutput D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT |
在效果将值传递到图形中的下一个效果之前,效果是否将颜色值固定在 0 到 1 之间。 该效果在预乘 alpha 之前固定值。 如果将其设置为 TRUE,则效果将固定值。 如果将其设置为 FALSE,则效果不会固定颜色值,但如果这些值精度不够高,则其他效果和输出图面可能会固定这些值。 类型为 BOOL。 默认值是 FALSE。 |
输出位图
输出位图大小与输入位图大小相同。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
最低受支持的服务器 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
标头 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |