亮度到 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) 的 Gamma 传输效果,然后使用该效果的输出。

 

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

 

输出位图

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

ID2D1Effect