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
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 |
---|
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 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 |