亮度效果
使用亮度效果控制图像的亮度。
此效果的 CLSID CLSID_D2D1Brightness。
示例图
以前 |
---|
之后 |
ComPtr<ID2D1Effect> brightnessEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Brightness, &brightnessEffect);
brightnessEffect->SetValue(D2D1_BRIGHTNESS_PROP_BLACK_POINT, D2D1::Vector2F(0.0f, 0.2f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(brightnessEffect.Get());
m_d2dContext->EndDraw();
效果属性
属性显示名称 | 类型和默认值 | 说明 |
---|---|---|
WhitePoint D2D1_BRIGHTNESS_PROP_WHITE_POINT |
D2D1_VECTOR_2F {1.0f, 1.0f} |
亮度传输曲线的上半部分。 白点调整图像较亮部分的外观。 此属性适用于 x 值和 y 值,按该顺序排列。 此属性的每个值都介于 0 和 1 之间(含)。 |
BlackPoint D2D1_BRIGHTNESS_PROP_BLACK_POINT |
D2D1_VECTOR_2F {0.0f, 0.0f} |
亮度传输曲线的下半部分。 黑点调整图像较深部分的外观。 此属性适用于 x 值和 y 值,按该顺序排列。 此属性的每个值都介于 0 和 1 之间(含)。 |
此效果使用指定的白色和黑色点生成用于调整位图的传输函数。 下一个公式描述传输函数。 输入强度在 0 和 1 之间定义。
效果算法实现创建传输函数的公式。 我们使用此函数来调整图像像素。 黑点和白点的 x 和 y 值是连接形成转换的两维坐标。 最终输出公式的每个部分:
使用此公式: 将图像数据从线性空间转换为非线性空间
根据以下值调整图像:
input 是 0 到 1 的输入图像像素强度值。
*白色 Pt. (x、y) *转换曲线的位置,以获取更亮的像素强度。
黑色 Pt。 (x、y) 是变暗器像素强度的转换曲线的位置。
使用以下公式将图像数据转换回线性空间:
此处显示了最终输出公式和分量部分。
输出位图
输出位图大小与输入位图大小相同。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
最低受支持的服务器 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
标头 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |