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 folgende Formel wird verwendet, um diesen Effekt zu berechnen.
Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Dabei sind C1, C2, C3, C4 Koeffizienten, die Sie festlegen.
Die Koeffizienten entsprechen den Werten in einem D2D1_VECTOR_4F (x, y, z, w):
- 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 zusammengesammelt. Das Quellrechteck ist blau, und das Ziel ist rot.
Das Bild hier ist die Ausgabe des arithmetischen Zusammengesetzten Effekts mit den Koeffizienten der Formel, 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 die Rechtecke die RGBA-Werte nicht überlappen, sind alle 0. Wenn die Rechtecke die Farbe überlappen, ist Magenta, da die Werte R und B beide maximal liegen.
Hier sehen Sie ein weiteres Beispielbild mit Code.
Vor Bild 1 |
---|
![]() |
Vor Bild 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 Formel, die zum Zusammengesetzten der beiden Eingabebilder verwendet werden. 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. 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. Typ ist 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 Nicht-Null-Koeffizienten ist, ist die Ausgabegröße der Schnittpunkt der Eingaberechtecke.
- Wenn C2 der einzige Nicht-Null-Koeffizienten ist, ist die Ausgabegröße die Größe des Quellrechtecks.
- Wenn C3 der einzige Nicht-Null-Koeffizienten ist, ist die Ausgabegröße die Größe des Zielrechtecks.
- Wenn alle Koeffizienten null sind, ist die Ausgabegröße ein leeres Rechteck.
- Bei allen anderen Koeffizientenwerten ist die Ausgabegröße die Vereinigung der Eingaberechtecke.
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 |