Farbmatrixeffekt

Verwenden Sie den Farbmatrixeffekt, um die RGBA-Werte einer Bitmap zu ändern.

Sie können diesen Effekt verwenden, um:

  • Entfernen eines Farbkanals aus einem Bild.
  • Reduzieren sie die Farbe in einem Bild.
  • Tauschen Sie Farbkanäle aus.
  • Kombinieren sie Farbkanäle.

Viele integrierte Effekte sind Spezialisierungen der Farbmatrix, die für die beabsichtigte Verwendung der Effekte optimiert sind. Beispiele hierfür sind Sättigung, Farbtonrotierung, Sepiaund Temperatur und Tönung.

Die CLSID für diesen Effekt ist CLSID _ D2D1ColorMatrix.

Beispielbild

Das folgende Beispiel zeigt die Ein- und Ausgabebilder des Farbmatrixeffekts, der die roten und blauen Kanäle austauscht.

Vorher
das Bild vor dem Effekt.
Danach
das Bild nach der Transformation.
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();

Dieser Effekt multipliziert die RGBA-Werte des Bilds mit einer 5x4-Spaltenhauptmatrix, wie in dieser Gleichung dargestellt.

eine Beispielmatrixdefinition.

Dieser Effekt funktioniert bei geraden und prämultiplizierten Alphabildern.

Effekteigenschaften

Anzeigename und Indexenumeration BESCHREIBUNG
Colormatrix
D2D1 _ COLORMATRIX _ PROP _ COLOR _ MATRIX
Eine 5x4-Matrix von float-Werten. Die Elemente in der Matrix sind nicht begrenzt und unitlos.
Der Standardwert ist die Identitätsmatrix.
Der Typ ist D2D1 _ MATRIX _ 5X4 _ F.
Der Standardwert ist 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
Der Alphamodus der Ausgabe. Weitere Informationen finden Sie unter Alphamodi.
Der Typ ist D2D1 _ COLORMATRIX _ ALPHA _ MODE.
Der Standardwert ist D2D1 _ COLORMATRIX _ ALPHA MODE _ _ PREMULTIPLIED.
ClampOutput
D2D1 _ COLORMATRIX _ _ PROP-KLAMMERAUSGABE _
Gibt an, ob der Effekt Farbwerte zwischen 0 und 1 zusammenbindet, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt. Der Effekt klammert die Werte, bevor er das Alpha vormultipliziert.
Wenn Sie diese Einstellung auf TRUE festlegen, bindet der Effekt die Werte an. Wenn Sie diese Einstellung auf FALSE festlegen, bindet der Effekt die Farbwerte nicht, aber andere Effekte und die Ausgabeoberfläche können die Werte klammern, wenn sie nicht hoch genug präzise sind.
Der Typ ist BOOL.
Der Standardwert ist FALSE.

Alphamodi

Name BESCHREIBUNG
D2D1 _ COLORMATRIX _ ALPHA _ MODE _ PREMULTIPLIED Der Effekt entfällt die Prämultiplizierung der Eingabe, wendet die Farbmatrix an und multipliziert die Ausgabe.
D2D1 _ COLORMATRIX _ ALPHA _ MODE _ STRAIGHT Der Effekt wendet die Farbmatrix direkt auf die Eingabe an und stellt die Ausgabe nicht vor.

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Unterstützte Mindestversion (Server) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Header d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect