亮度到 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 图像。 效果不适用于直接 alpha 图像,除非它们完全不透明。

注意

由于图像以伽玛补偿格式存储,因此在计算图像的亮度之前,应首先执行反伽玛修正来获取图像的真实颜色值。 由于图像通常以 2.2 伽玛形式存储,因此可以将伽马传输效果与指数 (1/2.2) 一起使用,然后使用该效果的输出。

 

要求

要求 价值
支持的最低客户端 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
支持的最低服务器 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
页眉 d2d1effects.h
图书馆 d2d1.lib、dxguid.lib

 

输出位图

输出的大小与输入图像的大小相同。

ID2D1Effect