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

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 |
|---|
![]() |
| Vor Abbildung 2 |
![]() |
| Nach |
![]() |
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 |


