Farbmatrixeffekt
Verwenden Sie den Farbmatrixeffekt, um die RGBA-Werte einer Bitmap zu ändern.
Sie können diesen Effekt für Folgendes verwenden:
- Entfernen sie einen Farbkanal aus einem Bild.
- Reduzieren Sie die Farbe in einem Bild.
- Farbkanäle austauschen.
- Kombinieren von Farbkanälen
Viele integrierte Effekte sind Spezialisierungen der Farbmatrix, die für die beabsichtigte Verwendung der Effekte optimiert sind. Beispiele hierfür sind Sättigung, Farbtondrehung, Sepia sowie Temperatur und Tönung.
Die CLSID für diesen Effekt ist CLSID_D2D1ColorMatrix.
Beispielbild
Das hier gezeigte Beispiel zeigt die Eingabe- und Ausgabebilder des Farbmatrixeffekts, der die roten und blauen Kanäle austauscht.
Vorher |
---|
Nach |
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 Formel dargestellt.
Dieser Effekt funktioniert bei geraden und vormultiplizierten Alphabildern.
Effekteigenschaften
Anzeigename und Indexenumeration | BESCHREIBUNG |
---|---|
Colormatrix D2D1_COLORMATRIX_PROP_COLOR_MATRIX |
Eine 5x4-Matrix mit Gleitkommawerten. Die Elemente in der Matrix sind nicht begrenzt und einheitslos. Der Standardwert ist die Identitätsmatrix. Der Typ ist D2D1_MATRIX_5X4_F. Der Standardwert ist Matrix5x4F(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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_CLAMP_OUTPUT |
Gibt an, ob der Effekt Farbwerte zwischen 0 und 1 klemmt, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt. Der Effekt klammert die Werte ein, bevor er das Alpha vormultipliziert. Wenn Sie dies auf TRUE festlegen, klammert der Effekt die Werte ein. Wenn Sie dies auf FALSE festlegen, klemmt der Effekt nicht die Farbwerte, sondern andere Effekte, und die Ausgabeoberfläche kann 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 hebt die Vormultiplikation der Eingabe auf, wendet die Farbmatrix an und multipliziert die Ausgabe vorab. |
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT | Der Effekt wendet die Farbmatrix direkt auf die Eingabe an und führt die Ausgabe nicht vorab aus. |
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 |