Condividi tramite


Effetto matrice di colori

Usare l'effetto matrice di colori per modificare i valori RGBA di una bitmap.

È possibile usare questo effetto per:

  • Rimuovere un canale colore da un'immagine.
  • Ridurre il colore in un'immagine.
  • Scambia canali di colore.
  • Combinare canali di colore.

Molti effetti predefiniti sono specializzazioni della matrice di colori ottimizzate per l'uso previsto degli effetti. Gli esempi includono saturazione, tonalità ruotano, sepiae temperatura e tinta.

Il CLSID per questo effetto è CLSID_D2D1ColorMatrix.

Immagine di esempio

L'esempio seguente mostra le immagini di input e output dell'effetto matrice di colore che scambia i canali rosso e blu.

Prima
l'immagine prima dell'effetto.
Dopo
'immagine dopo la trasformazione.
ComPtr<ID2D1Effect> colorMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ColorMatrix, &colorMatrixEffect);

colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0,   0, 1, 0, 0,   1, 0, 0, 0,   0, 0, 0, 1,   0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(colorMatrixEffect.Get());
m_d2dContext->EndDraw();

Questo effetto moltiplica i valori RGBA dell'immagine per una matrice principale di colonna 5x4, come illustrato in questa equazione.

una definizione di matrice di esempio.

Questo effetto funziona sulle immagini alfa dritte e premoltiplicate.

Proprietà dell'effetto

Enumerazione del nome visualizzato e dell'indice Descrizione
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Matrice 5x4 di valori float. Gli elementi nella matrice non sono delimitati e sono unitless.
Il valore predefinito è la matrice di identità.
Il tipo è D2D1_MATRIX_5X4_F.
Il valore predefinito è Matrix5x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Modalità alfa dell'output. Per altre informazioni, vedi modalità Alfa.
Il tipo è D2D1_COLORMATRIX_ALPHA_MODE.
Il valore predefinito è D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Indica se l'effetto blocca i valori di colore su tra 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. L'effetto blocca i valori prima di premoltiplicare l'alfa .
Se si imposta questa proprietà su TRUE, l'effetto bloccherà i valori. Se si imposta questa proprietà su FALSE, l'effetto non blocca i valori di colore, ma altri effetti e la superficie di output possono bloccare i valori se non sono sufficientemente precisi.
Il tipo è BOOL.
Il valore predefinito è FALSE.

Modalità alfa

Nome Descrizione
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED L'effetto annulla la premoltiplica l'input, applica la matrice di colori e premoltiplica l'output.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT L'effetto applica la matrice di colori direttamente all'input e non premoltiply l'output.

Fabbisogno

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
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect