亮度效果
使用亮度效果控制图像的亮度。
此效果的 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 值,顺序为 y 值。 此属性的每个值都介于 0 和 1 之间(含)。 |
BlackPoint D2D1_BRIGHTNESS_PROP_BLACK_POINT |
D2D1_VECTOR_2F {0.0f,0.0f} |
亮度传输曲线的下半部分。 黑点调整图像较深部分的外观。 此属性用于 x 值和 y 值,顺序为 y 值。 此属性的每个值都介于 0 和 1 之间(含)。 |
此效果使用指定的白色和黑色点生成用于调整位图的传输函数。 下一个公式描述了传输函数。 输入强度在 0 和 1 之间定义。
效果算法实现创建传输函数的公式。 我们使用此函数调整图像像素。 黑点和白色点的 x 和 y 值是两个维度中的坐标,这些坐标连接到形成转换。 最终输出公式的每个部分:
使用此公式将图像数据从线性空间转换为非线性空间:
根据以下值调整图像:
输入 是 0 到 1 的输入图像像素强度值。
*白色 Pt。 (x, y)*转换曲线的位置,用于更亮的像素强度。
黑色 Pt。 (x,y) 是变暗像素强度的转换曲线的位置。
使用此公式将图像数据转换回线性空间:
此处显示了最终输出公式和组件部分。
的完整计算
输出位图
输出位图大小与输入位图大小相同。
要求
要求 | 价值 |
---|---|
支持的最低客户端 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
支持的最低服务器 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
页眉 | d2d1effects.h |
图书馆 | d2d1.lib、dxguid.lib |