离散传输效果
使用从你提供的值列表创建的步进传输函数,使用离散传输效果来映射图像的颜色强度。
此效果的 CLSID CLSID_D2D1DiscreteTransfer。
示例图
此处的图像显示了离散传输效果的输入和输出。
之前 |
---|
之后 |
ComPtr<ID2D1Effect> discreteTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DiscreteTransfer, &discreteTransferEffect);
discreteTransferEffect->SetInput(0, bitmap);
float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(discreteTransferEffect.Get());
m_d2dContext->EndDraw();
传输函数基于输入列表:V= (V0,V1,V2,V3,V?,VN) 其中 N 是元素数 - 1。
输入像素强度表示为 C。输出像素强度 C 使用公式计算:
对于值 C,选择值 k,以便:
可以使用公式计算输出 C: C' = V?
此效果适用于直乘和预乘 alpha 图像。 该效果输出预乘的 alpha 位图。
如果输入 [0.25, 0.5, 0.75, 1.0]
为 ,则离散传输函数的图如下所示。
效果属性
注意
离散传输属性的所有通道的值都是无单位的,其最小值为 0.0,最大值为 1.0。
显示名称和索引枚举 | 类型和默认值 | 说明 |
---|---|---|
RedTable D2D1_DISCRETETRANSFER_PROP_RED_TABLE |
FLOAT[] {0.0f, 1.0f} |
用于定义 Red 通道的传输函数的值列表。 |
RedDisable D2D1_DISCRETETRANSFER_PROP_RED_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于红色通道。 如果设置为 FALSE,则效果会将 RedDiscreteTransfer 函数应用于 Red 通道。 |
GreenTable D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE |
FLOAT[] {0.0f, 1.0f} |
定义绿色通道的传输函数的值列表。 |
GreenDisable D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于绿色通道。 如果设置为 FALSE,则效果会将 GreenDiscreteTransfer 函数应用于绿色通道。 |
BlueTable D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE |
FLOAT[] {0.0f, 1.0f} |
定义 Blue 通道传输函数的值列表。 |
BlueDisable D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于蓝色通道。 如果设置为 FALSE,则效果会将 BlueDiscreteTransfer 函数应用于 Blue 通道。 |
AlphaTable D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE |
FLOAT[] {0.0f, 1.0f} |
定义 Alpha 通道的传输函数的值列表。 |
AlphaDisable D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSE |
如果将其设置为 TRUE,则效果不会将传输函数应用于 Alpha 通道。 如果设置为 FALSE,则效果会将 AlphaDiscreteTransfer 函数应用于 Alpha 通道。 |
ClampOutput D2D1_DISCRETETRANSFER_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 |