Teilen über


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.
  • Verringern 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 sind Sättigung, Farbtondrehung, Sepiaund Temperatur und Farbton.

Die CLSID für diesen Effekt ist CLSID_D2D1ColorMatrix.

Beispielbild

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

Vor
das Bild vor dem Effekt.
Nach
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 Hauptmatrix von 5 x 4 Spalten, wie in dieser Formel dargestellt.

einer Beispielmatrixdefinition.

Dieser Effekt funktioniert auf 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 sind einheitslos.
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, 0, 1, 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_CLAMP_OUTPUT
Gibt an, ob der Effekt Farbwerte zwischen 0 und 1 einklammert, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt. Der Effekt klemmt die Werte vor der Multiplikation des Alphas.
Wenn Sie dies auf TRUE festlegen, klammert der Effekt die Werte. Wenn Sie dies auf FALSE festlegen, klammert der Effekt nicht die Farbwerte, aber andere Effekte und die Ausgabeoberfläche können die Werte klammern, wenn sie nicht von hoher Genauigkeit sind.
Der Typ ist BOOL.
Der Standardwert ist FALSE.

Alphamodi

Name Beschreibung
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED Der Effekt hebt die Eingabe auf, 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 vorab bereit.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Mindestens unterstützter Server Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Kopfball d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect-