Condividi tramite


Effetto matrice di colore

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

È possibile usare questo effetto per:

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

Molti effetti predefiniti sono specializzazioni della matrice di colore ottimizzate per l'uso previsto degli effetti. Gli esempi includono saturazione, rotazione delle tonalità, sepia e 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 rossi e blu.

Prima
immagine prima dell'effetto.
After
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 in base a una matrice principale di colonna 5x4, come illustrato in questa equazione.

definizione di matrice di esempio.

Questo effetto funziona su immagini alfa dritte e premultiplied.

Proprietà dell'effetto

Enumerazione nome visualizzato e indice Descrizione
Colormatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Matrice 5x4 di valori float. Gli elementi nella matrice non sono delimitati e non 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, 1, 0, 0, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Modalità alfa dell'output. Per altre informazioni, vedere Modalità Alfa .
Il tipo è D2D1_COLORMATRIX_ALPHA_MODE.
Il valore predefinito è D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Se l'effetto blocca i valori di colore su 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. L'effetto blocca i valori prima che premultiplifichi l'alfa .
Se si imposta questa opzione su TRUE, l'effetto blocca i valori. Se si imposta questa opzione 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 di precisione sufficiente.
Il tipo è BOOL.
Il valore predefinito è FALSE.

Modalità Alfa

Nome Descrizione
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED L'effetto non premultiplizza l'input, applica la matrice di colori e premultiplizza l'output.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT L'effetto applica la matrice di colore direttamente all'input e non premultiply l'output.

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

ID2D1Effect