Compartilhar via


Luminância para efeito alfa

Use a luminância para efeito alfa para definir o canal alfa para a luminância da imagem e define os canais de cor como 0. Você pode usar a saída desse efeito para fazer uma sobreposição semitransparente com base no brilho da imagem de entrada. Ou você pode usá-la para criar uma máscara de imagem.

Observação

Esse efeito não tem propriedades.

 

O CLSID para esse efeito é CLSID_D2D1LuminanceToAlpha.

Imagem de exemplo

Este exemplo mostra a saída da luminância para efeito alfa composto sobre uma superfície branca para mostrar opacidade.

Antes
a imagem antes do efeito.
After (após)
a imagem após a transformação.

 

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();

Esse efeito define o canal alfa da saída como a luminância da imagem de entrada usando essa matriz de cores.

a matriz de cores que o efeito usa para definir o canal alfa.

Esse efeito consome e gera imagens alfa pré-multiplicadas. O efeito não funcionará em imagens alfa retas, a menos que sejam totalmente opacas.

Observação

Como as imagens são armazenadas em um formato compensado por gama, antes de calcular a luminância de uma imagem, primeiro você deve executar a correção gama inversa para obter os valores de cor verdadeiros para a imagem. Como as imagens normalmente são armazenadas em gama 2.2, você pode usar o efeito de transferência gama com um expoente de (1/2.2) e, em seguida, usar a saída desse efeito.

 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Servidor mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

 

Bitmap de saída

A saída tem o mesmo tamanho que a imagem de entrada.

ID2D1Effect