伽玛转移效果

使用伽马传输效果使用使用振幅、指数和为每个通道提供的偏移量创建的伽玛函数来映射图像的颜色强度。

此效果的 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
红色通道的伽玛传输函数的指数。 类型为 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
绿色通道的伽玛传输函数的振幅。 类型为 FLOAT。
默认值为 1.0f。
GreenExponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
绿色通道伽玛转移函数的指数。 类型为 FLOAT。
默认值为 1.0f。
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
绿色通道伽玛传输函数的偏移量。 类型为 FLOAT。
默认值为 0.0f。
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
如果将其设置为 TRUE,则不会将传输函数应用于绿色通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将伽玛传输函数应用于绿色通道。 类型为 BOOL。
默认值为 FALSE。
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
蓝色通道的伽玛传输函数的振幅。 类型为 FLOAT。
默认值为 1.0f。
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
蓝色通道的伽玛转移函数的指数。 类型为 FLOAT。
默认值为 1.0f。
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
蓝色通道的伽玛传输函数的偏移量。 类型为 FLOAT。
默认值为 0.0f。
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
如果将其设置为 TRUE,则不会将传输函数应用于 Blue 通道。 使用标识传输函数。 如果将其设置为 FALSE,则会将伽玛传输函数应用于蓝色通道。 类型为 BOOL。
默认值为 FALSE。
AlphaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
alpha 通道的伽玛传输函数的振幅。 类型为 FLOAT。
默认值为 1.0f。
AlphaExponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
alpha 通道伽玛转移函数的指数。 类型为 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

ID2D1Effect