亮度到 alpha 效果
使用亮度到 alpha 效果将 alpha 通道设置为图像的亮度,并将颜色通道设置为 0。 可以使用此效果的输出根据输入图像的亮度生成半透明覆盖。 或者,可以使用它制作图像掩码。
注意
此效果没有属性。
此效果的 CLSID CLSID_D2D1LuminanceToAlpha。
示例图像
本示例演示在白色图面上复合的亮度到 alpha 效果的输出,以显示不透明度。
以前 |
---|
在效果之前 ![]() |
后 |
转换后 ![]() |
ComPtr<ID2D1Effect> luminanceToAlphaEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LuminanceToAlpha, &luminanceToAlphaEffect);
luminanceToAlphaEffect->SetInput(0, bitmap);
// LuminanceToAlpha result is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);
floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, luminanceToAlphaEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
此效果使用此颜色矩阵将输出的 alpha 通道设置为输入图像的亮度。
此效果使用并输出预乘 alpha 图像。 效果不适用于直接 alpha 图像,除非它们完全不透明。
注意
由于图像以伽玛补偿格式存储,因此在计算图像的亮度之前,应首先执行反伽玛修正来获取图像的真实颜色值。 由于图像通常以 2.2 伽玛形式存储,因此可以将伽马传输效果与指数 (1/2.2) 一起使用,然后使用该效果的输出。
要求
要求 | 价值 |
---|---|
支持的最低客户端 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
支持的最低服务器 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
页眉 | d2d1effects.h |
图书馆 | d2d1.lib、dxguid.lib |
输出位图
输出的大小与输入图像的大小相同。
相关主题