亮度到 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) 的 Gamma 传输效果,然后使用该效果的输出。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
最低受支持的服务器 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
标头 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |
输出位图
输出的大小与输入图像的大小相同。
相关主题