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 |
---|
![]() |
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 Hauptmatrix von 5 x 4 Spalten, wie in dieser Formel dargestellt.
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 |