Partager via


Luminance à effet alpha

Utilisez l’effet luminance sur alpha pour définir le canal alpha sur la luminance 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-transparence basée sur la luminosité de l’image d’entrée. Vous pouvez également l’utiliser pour créer un masque d’image.

Notes

Cet effet n’a aucune propriété.

 

Le CLSID de cet effet est CLSID_D2D1LuminanceToAlpha.

Exemple d’image

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

Avant
image avant l’effet.
After
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 luminance de l’image d’entrée à l’aide de cette matrice de couleurs.

matrice de couleurs que l’effet utilise 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 les images alpha droites, sauf si elles sont entièrement opaques.

Notes

Étant donné que les images sont stockées dans un format compensé par gamma, avant de calculer la luminance d’une image, vous devez d’abord effectuer une correction gamma inverse pour obtenir les valeurs de couleur vraies de 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.

 

Spécifications

Condition requise Valeur
Client minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
Serveur minimal 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