Dela via


Färgmatriseffekt

Använd färgmatriseffekten för att ändra RGBA-värdena för en bitmapp.

Du kan använda den här effekten för att:

  • Ta bort en färgkanal från en bild.
  • Minska färgen i en bild.
  • Växla färgkanaler.
  • Kombinera färgkanaler.

Många inbyggda effekter är specialiseringar av färgmatriser som är optimerade för avsedd användning av effekterna. Exempel är mättnad, nyans rotera, sepiaoch temperatur och nyans.

CLSID för den här effekten är CLSID_D2D1ColorMatrix.

Exempelbild

Exemplet här visar in- och utdatabilderna för färgmatriseffekten som växlar de röda och blå kanalerna.

Före
bilden före effekten.
Efter
bilden efter transformen.
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();

Den här effekten multiplicerar RGBA-värdena för bilden med en 5x4, kolumnmatris som visas i den här ekvationen.

en exempelmatrisdefinition.

Den här effekten fungerar på raka och förmultiplierade alfabilder.

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
En 5x4-matris med flyttalvärden. Elementen i matrisen är inte avgränsade och är enhetslösa.
Standardvärdet är identitetsmatrisen.
Typen är D2D1_MATRIX_5X4_F.
Standardvärdet är 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
Alfaläget för utdata. Mer information finns i Alfalägen.
Typen är D2D1_COLORMATRIX_ALPHA_MODE.
Standardvärdet är D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Om effekten klämmer ihop färgvärden till mellan 0 och 1 innan effekten skickar värdena till nästa effekt i diagrammet. Effekten klämmer fast värdena innan den premultiplies alfa .
Om du ställer in detta på TRUE klämmer effekten fast värdena. Om du ställer in detta på FALSE kommer effekten inte att klämma in färgvärdena, men andra effekter och utdataytan kan klämma fast värdena om de inte har tillräckligt hög precision.
Typen är BOOL.
Standardvärdet är FALSE.

Alfalägen

Namn Beskrivning
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED Effekten avförmulterar indata, tillämpar färgmatrisen och förmulterar utdata.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT Effekten tillämpar färgmatrisen direkt på indata och förmultiplerar inte utdata i förväg.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect