Partager via


Luminance à effet alpha

Utilisez la luminance pour l’effet alpha pour définir le canal alpha sur la luminosité de l’image et définir les canaux de couleur sur 0. Vous pouvez utiliser la sortie de cet effet pour créer une superposition semi-transparente basée sur la luminosité de l’image d’entrée. Vous pouvez également l’utiliser pour créer un masque d’image.

Note

Cet effet n’a aucune propriété.

 

Le CLSID pour cet effet est CLSID_D2D1LuminanceToAlpha.

Exemple d’image

Cet exemple montre la sortie de la luminance en effet alpha composite sur une surface blanche pour afficher l’opacité.

Avant
l’image avant l’effet.
Après
l’image après la transformation.

 

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

Cet effet définit le canal alpha de la sortie sur la luminosité de l’image d’entrée à l’aide de cette matrice de couleur.

la matrice de couleur utilisée par l’effet pour définir le canal alpha.

Cet effet consomme et génère des images alpha prémultipliées. L’effet ne fonctionnera pas sur des images alpha droites, sauf si elles sont entièrement opaques.

Note

Étant donné que les images sont stockées dans un format compensé par gamma, avant de calculer la luminosité d’une image, vous devez d’abord effectuer une correction gamma inverse pour obtenir les valeurs de couleur vraies pour l’image. Étant donné que les images sont normalement stockées à 2,2 gamma, vous pouvez utiliser l’effet de transfert Gamma avec un exposant de (1/2.2), puis utiliser la sortie de cet effet.

 

Exigences

Exigence Valeur
Client minimum pris en charge Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
Serveur minimum pris en charge Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
En-tête d2d1effects.h
Bibliothèque d2d1.lib, dxguid.lib

 

Bitmap de sortie

La sortie est de la même taille que l’image d’entrée.

ID2D1Effect