线性传输效果
使用线性传输效果通过为每个通道提供的值列表创建的线性函数来映射图像的颜色强度。
此效果的 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 |
FLOAT 0.0f |
红色通道线性函数的 Y 截距。 |
RedSlope D2D1_LINEARTRANSFER_PROP_RED_SLOPE |
FLOAT 1.0f |
红色通道的线性函数的斜率。 |
RedDisable D2D1_LINEARTRANSFER_PROP_RED_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于红色通道。 如果设置为 FALSE,则效果会将 RedLinearTransfer 函数应用于 Red 通道。 |
GreenYIntercept D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT |
FLOAT 0.0f |
绿色通道线性函数的 Y 截距。 |
GreenSlope D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE |
FLOAT 1.0f |
绿色通道线性函数的斜率。 |
GreenDisable D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于绿色通道。 如果将其设置为 FALSE,则会将 GreenLinearTransfer 函数应用于绿色通道。 |
BlueYIntercept D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT |
FLOAT 0.0f |
蓝色通道线性函数的 Y 截距。 |
BlueSlope D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE |
FLOAT 1.0f |
蓝色通道的线性函数的斜率。 |
BlueDisable D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于蓝色通道。 如果将其设置为 FALSE,则会将 BlueLinearTransfer 函数应用于 Blue 通道。 |
AlphaYIntercept D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT |
FLOAT 0.0f |
Alpha 通道线性函数的 Y 截距。 |
AlphaSlope D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE |
FLOAT 0.0f |
Alpha 通道的线性函数的斜率。 |
AlphaDisable D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于 Alpha 通道。 如果将其设置为 FALSE,则会将 AlphaLinearTransfer 函数应用于 Alpha 通道。 |
ClampOutput D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALSE |
在效果将值传递给图形中的下一个效果之前,该效果是否将颜色值固定为 0 到 1 之间。 该效果在预乘 alpha 之前固定值。 如果将其设置为 TRUE,则效果将固定值。 如果将其设置为 FALSE,则效果不会固定颜色值,但如果其精度不够高,则其他效果和输出图面可能会限制这些值。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
最低受支持的服务器 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
标头 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |