Arithmetischer zusammengesetzter Effekt

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

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

Formel

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

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

Wobei C1, C2, C3, C4 Koeffizienten sind, die Sie festlegen.

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.

Die Abbildung hier ist die Ausgabe des Arithmetischen Zusammengesetzt-Effekts mit den Koeffizienten der Gleichung, die hier auf die 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 sich die Rechtecke nicht mit den RGBA-Werten überschneiden, sind alle 0. Wenn die Rechtecke die Farbe überlappen, ist magenta, da die R- und B-Werte maximal sind.

Hier sehen Sie ein weiteres Beispielbild mit Code.

Vor Abbildung 1
das erste Quellbild vor dem Effekt.
Vor Abbildung 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 Zusammengesetzten der beiden Eingabebilder verwendet wird. Die Koeffizienten sind einheitenlos und ungebunden. Typ: D2D1 _ VECTOR _ 4F.
Der Standardwert ist {1.0f, 0.0f, 0.0f, 0.0f}.
ClampOutput
AUSGABE DER _ D2D1-ARITHMETICCOMPOSITE-PROP-KLAMMER _ _ _
Der Effekt bindet Farbwerte auf zwischen 0 und 1, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt.
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.
Typ: BOOL
Der Standardwert ist FALSE.

Ausgabebitmap

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

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

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