线性传输效果

使用线性传输效果通过你为每个通道提供的值列表创建的线性函数来映射图像的颜色强度。

此效果的 CLSID CLSID_D2D1LinearTransfer。

示例图像

以前
在效果之前 图像。
转换后 图像。
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);

linearTransferEffect->SetInput(0, bitmap);

linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(linearTransferEffect.Get());
m_d2dContext->EndDraw();

根据指定的每个通道的斜率和 y 截距创建线性传输函数。 输出像素强度 C 使用公式计算:C' = mC + B,其中 m 是线性函数的斜率,B 是线性函数的 Y 截距。

此效果适用于直接和预乘的 alpha 图像。 效果输出预乘的 alpha 位图。

效果属性

注意

对于线性传输属性的所有通道:

  • Y 截距不受限制,并且是无单位的。
  • 斜率没有边界,是无单位的。
显示名称和索引枚举 类型和默认值 描述
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT

0.0f
红色通道的线性函数的 Y 截距。
RedSlope
D2D1_LINEARTRANSFER_PROP_RED_SLOPE

1.0f
红色通道的线性函数的斜率。
RedDisable
D2D1_LINEARTRANSFER_PROP_RED_DISABLE
BOOL

如果将其设置为 TRUE,效果不会将传输函数应用到 Red 通道。 如果将此项设置为 FALSE,效果会将 RedLinearTransfer 函数应用于 Red 通道。
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT

0.0f
绿色通道的线性函数的 Y 截距。
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE

1.0f
绿色通道的线性函数的斜率。
GreenDisable
D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE
BOOL

如果将此项设置为 TRUE,效果不会将传输函数应用于绿色通道。 如果将其设置为 FALSE,则会将 GreenLinearTransfer 函数应用于 Green 通道。
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT

0.0f
蓝色通道的线性函数的 Y 截距。
BlueSlope
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE

1.0f
蓝色通道的线性函数的斜率。
BlueDisable
D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE
BOOL

如果将其设置为 TRUE,效果不会将传输函数应用于蓝色通道。 如果将其设置为 FALSE,则会将 BlueLinearTransfer 函数应用于 Blue 通道。
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT

0.0f
Alpha 通道的线性函数的 Y 截距。
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE

0.0f
Alpha 通道的线性函数的斜率。
AlphaDisable
D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE
BOOL

如果将其设置为 TRUE,效果不会将传输函数应用于 Alpha 通道。 如果将其设置为 FALSE,则会将 AlphaLinearTransfer 函数应用于 Alpha 通道。
ClampOutput
D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT
BOOL

在效果将值传递到图形中的下一个效果之前,该效果是否将颜色值固定到 0 到 1 之间。 效果在预乘 alpha 之前固定值。
如果将此值设置为 TRUE,效果将固定值。 如果将此值设置为 FALSE,则效果不会固定颜色值,但如果这些值不够精确,则其他效果和输出图面可能会固定这些值。

要求

要求 价值
支持的最低客户端 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
支持的最低服务器 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
页眉 d2d1effects.h
图书馆 d2d1.lib、dxguid.lib

ID2D1Effect