Arithmetischer zusammengesetzter Effekt

Verwenden Sie den arithmetischen zusammengesetzten Effekt, um 2 Bilder mit einer gewichteten Summe von Pixeln aus den Eingabebildern zu kombinieren.

Die CLSID für diesen Effekt ist CLSID_D2D1ArithmeticComposite.

Formel

Die formel wird hier verwendet, um diesen Effekt zu berechnen.

Ausgabergba = C1 * Quellergba * Zielrgba + C2 * Quellergba + C3 * Zielrgba + C4

Dabei sind C1, C2, C3, C4 festgelegte Koeffizienten.

Die Koeffizienten werden den Werten in einem D2D1_VECTOR_4F (x, y, z, w) zugeordnet:

  • x = C1
  • y = C2
  • z = C3
  • w = C4

Beispielbild

Ein einfaches Beispiel ist das Hinzufügen der Quell- und Zielpixel. Im Beispiel werden zwei abgerundete Rechtecke zusammengesetzt. Das Quellrechteck ist blau und das Ziel rot.

Das hier dargestellte Bild ist die Ausgabe des arithmetischen zusammengesetzten Effekts mit den Koeffizienten der Formel, die auf die hier angegebenen Werte festgelegt sind.

  • C1 = 0
  • C2 = 1
  • C3 = 1
  • C4 = 0

Ein Beispielbild, das zwei abgerundete Rechtecke der gleichen Größe zeigt, die sich mithilfe des arithmetischen zusammengesetzten Effekts überlappen.

Das Ergebnis ist, dass die Pixelwerte für die Quelle und das Ziel hinzugefügt werden. Die Bereiche, in denen die Rechtecke die RGBA-Werte nicht überlappen, sind alle 0. Wenn sich die Rechtecke überlappen, ist die Farbe Magenta, da die R- und B-Werte beide maximal sind.

Hier sehen Sie ein weiteres Beispielbild mit Code.

Vor Bild 1
das erste Quellbild vor dem Effekt.
Vor Bild 2
das zweite Bild vor dem Effekt.
Nach
das Bild nach der Transformation.
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);

arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();

Effekteigenschaften

Anzeigename und Indexenumeration BESCHREIBUNG
Koeffizienten
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
Die Koeffizienten für die Gleichung, die zum Kombinieren der beiden Eingabebilder verwendet wird. Die Koeffizienten sind einheitslos und ungebunden. Typ ist D2D1_VECTOR_4F.
Der Standardwert ist {1.0f, 0.0f, 0.0f, 0.0f}.
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
Der Effekt klemmt Farbwerte zwischen 0 und 1, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt.
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.
Typ ist BOOL.
Der Standardwert ist FALSE.

Ausgabebitbitbit

Die Ausgabebitbitte hängt von den Koeffizientenwerten ab. Dies sind die möglichen Ausgabebitbitbitgrößen.

  • Wenn C1 der einzige Ungleich null-Koeffizienten ist, ist die Ausgabegröße die Schnittmenge der Eingaberechtecke.
  • Wenn C2 der einzige Ungleich null-Koeffizienten ist, entspricht die Ausgabegröße der Größe des Quellrechtecks.
  • Wenn C3 der einzige Ungleich null-Koeffizienten ist, entspricht die Ausgabegröße der Größe des Zielrechtecks.
  • Wenn alle Koeffizienten null sind, ist die Ausgabegröße ein leeres Rechteck.
  • Für alle anderen Koeffizientenwerte entspricht die Ausgabegröße der Union der Eingaberechtecke.

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