Partilhar via


Luminância ao efeito alfa

Use o efeito luminância para 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á-lo para fazer uma máscara de imagem.

Observação

Este efeito não tem propriedades.

 

O CLSID para este efeito é CLSID_D2D1LuminanceToAlpha.

Imagem de exemplo

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

Antes
a imagem antes do efeito.
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();

Este efeito define o canal alfa da saída para a luminância da imagem de entrada usando esta matriz de cores.

matriz de cores, o efeito usa para definir o canal alfa.

Este efeito consome e produz imagens alfa pré-multiplicadas. O efeito não funcionará em imagens alfa retas, a menos que elas 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, você deve primeiro executar a correção de gama inversa para obter os valores de cor verdadeiros para a imagem. Como as imagens são normalmente armazenadas em 2,2 gama, você pode usar o efeito de transferência Gamma com um expoente de (1/2.2) e, em seguida, usar a saída desse efeito.

 

Requerimentos

Exigência Valor
Cliente mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Servidor mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

 

Bitmap de saída

A saída é do mesmo tamanho que a imagem de entrada.

ID2D1Effect