Condividi tramite


Luminanza a effetto alfa

Usare la luminanza per l'effetto alfa per impostare il canale alfa sulla luminanza dell'immagine e impostare i canali di colore su 0. È possibile usare l'output di questo effetto per creare una sovrimpressione semitrasparente in base alla luminosità dell'immagine di input. In alternativa, è possibile usarlo per creare una maschera di immagine.

Nota

Questo effetto non ha proprietà.

 

Il CLSID per questo effetto è CLSID_D2D1LuminanceToAlpha.

Immagine di esempio

In questo esempio viene illustrato l'output della luminanza per l'effetto alfa composito su una superficie bianca per mostrare l'opacità.

Prima
immagine prima dell'effetto.
After
l'immagine dopo la trasformazione.

 

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

Questo effetto imposta il canale alfa dell'output sulla luminanza dell'immagine di input usando questa matrice di colori.

matrice di colori utilizzata dall'effetto per impostare il canale alfa.

Questo effetto utilizza e restituisce immagini alfa premoltiplicate. L'effetto non funzionerà sulle immagini alfa dritte, a meno che non siano completamente opache.

Nota

Poiché le immagini vengono archiviate in un formato con compensazione gamma, prima di calcolare la luminanza per un'immagine, è necessario prima eseguire la correzione gamma inversa per ottenere i valori di colore reali per l'immagine. Poiché le immagini sono in genere archiviate a gamma 2.2, è possibile usare l'effetto di trasferimento Gamma con un esponente di (1/2.2) e quindi usare l'output di tale effetto.

 

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Server minimo supportato Windows 8 e aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Intestazione d2d1effects.h
Libreria d2d1.lib, dxguid.lib

 

Bitmap di output

L'output è la stessa dimensione dell'immagine di input.

ID2D1Effect