Blendeffekt
Verwenden Sie den Blend-Effekt, um 2 Bilder zu kombinieren. Dieser Effekt hat 26 Blendmodi.
Die CLSID für diesen Effekt ist CLSID_D2D1Blend.
- Blending-Beispiele
- Effekteigenschaften
- Blend-Modi
- HSL-Farbraumkonvertierungen
- Ausgabebitmap-
- Beispielcode
- Anforderungen
- Verwandte Themen
Vermischungsbeispiele
Hier ist ein Beispielbild für jeden Blendmodus des Blendeffekts. Eine vollständige Liste der Blendmodi und der entsprechenden Moduseigenschaften finden Sie im nächsten Abschnitt.
Hier ist ein weiteres Beispiel für die Verwendung des Ausschlussmodus.
Vor Bild 1 |
---|
![]() |
Vor Bild 2 |
![]() |
Nach |
![]() |
ComPtr<ID2D1Effect> blendEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Blend, &blendEffect);
blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(blendEffect.Get());
m_d2dContext->EndDraw();
Effekteigenschaften
Anzeigename und Indexenumeration | Beschreibung |
---|---|
Modus D2D1_BLEND_PROP_MODE |
Der für den Effekt verwendete Blendmodus. Weitere Informationen finden Sie unter Blend-Modi. Der Typ ist D2D1_BLEND_MODE. Der Standardwert ist D2D1_BLEND_MODE_MULTIPLY. |
Blend-Modi
In der folgenden Tabelle sind alle Mischungsmodi dieses Effekts aufgeführt. Die Hilfsfunktionen, die zum Berechnen der Ausgabe des Effekts erforderlich sind, befinden sich im nächsten Abschnitt.
Farbe: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)
Alpha: OA = FA * (1 - BA) + BA
Wo:
- OPRGB- ist die vorab multiplizierte Ausgabefarbe.
- OA ist Ausgabe alpha
- BRGB- ist die nicht multiplizierte Zielfarbe.
- BA ist Ziel-Alpha
- FRGB- ist die nicht multiplizierte Quellfarbe.
- FA ist Quell-Alpha
- f(SRGB-, DRGB-) ist eine Blendfunktion, die je nach Blendmodus variiert
Einige der Blendmodi erfordern konvertierungs- und aus dem Farbton, der Sättigung, der Leuchtdichte (HSL) Farbraum in RGB.
Aufzählung | Gleichung |
---|---|
D2D1_BLEND_MODE_DARKEN | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_MULTIPLY | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_COLOR_BURN | Einfache Mischungsformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_BURN | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_DARKER_COLOR | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_LIGHTEN | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_SCREEN | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_COLOR_DODGE | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_DODGE | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LIGHTER_COLOR | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_OVERLAY | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_SOFT_LIGHT | Einfache Mischungsformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_HARD_LIGHT | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_VIVID_LIGHT | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_LIGHT | Einfache Blendformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_PIN_LIGHT | Einfache Mischungsformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_HARD_MIX | Einfache Mischungsformeln mit f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_DIFFERENCE | Einfache Blendformeln mit f(FRGB-, BRGB-) = Abs(FRGB- - BRGB-) |
D2D1_BLEND_MODE_EXCLUSION | Einfache Blendformeln mit f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB |
D2D1_BLEND_MODE_HUE | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_SATURATION | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_COLOR | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_LUMINOSITY | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_DISSOLVE | Gegeben:
![]() |
D2D1_BLEND_MODE_SUBTRACT | Einfache Mischungsformel nur für Alpha.
![]() |
D2D1_BLEND_MODE_DIVISION | Einfache Mischungsformel nur für Alpha.
![]() |
Anmerkung
Für alle Blend-Modi wird der Ausgabewert vormultipliziert und an den Bereich geklammert [0, 1].
HSL-Farbraumkonvertierungen
Die Leuchtdichtekomponente wird mit den RGB-Gewichtungen hier berechnet:
- kR = 0,30
- kG = 0,59
- kB = 0,11
Konvertieren von RGB in HSL
Dies platziert S und L- im Bereich [0,0, 1,0] und H- im Bereich [-1,0, 5,0].
Konvertieren von HSL in RGB
Um die andere Art und Weise zu konvertieren, verwenden wir die Umkehrung der vorherigen Berechnungen.
Wenn S = 0, R = G = B = L
Andernfalls gibt es sechs Farbtonabhängige Fälle:
Wenn H- größer als 0 ist, befinden sich die Werte im Rot-Magenta-Sektor, in dem R>B>G.
Wenn H- größer als oder gleich 0 und kleiner als 1 ist, befinden sich die Werte im rot-gelben Sektor, in dem R>G>B.
Wenn H- größer als oder gleich 1 und kleiner als 2 ist, befinden sich die Werte im gelb/grünen Sektor, in dem G>R>B.
Wenn H- größer als oder gleich 2 und kleiner als 3 ist, befinden sich die Werte im Grün/Cyan-Sektor, in dem G>B>R.
Wenn H- größer als oder gleich 3 und kleiner als 4 ist, befinden sich die Werte im Zyan/Blau-Sektor, in dem B>G>R.
Wenn H- größer als oder gleich 4 ist, befinden sich die Werte im Blau-Magenta-Sektor, in dem B>R>G.
Da die Mischungsmodi beliebige Kombinationen von HSL-Komponenten aus zwei verschiedenen Farben machen, ist es üblich, dass der konvertierte RGB-Wert außerhalb des zulässigen Bereichs von [0,0, 1,0] liegt, d. h. eine oder mehrere Kanalkomponenten außerhalb des zulässigen Bereichs von [0,0, 1,0]. Diese Farben werden wieder in die Farbskala gebracht, indem die Sättigung minimal reduziert wird und gleichzeitig Farbton und Leuchtdichte erhalten bleiben:
Ausgabebitmap
Die Ausgabebitmap für diesen Effekt ist immer die Größe der Vereinigung der beiden Eingabebilder.
Beispielcode
Laden Sie für ein Beispiel für diesen Effekt das Beispiel Direct2D-Zusammengesetzten Effektmodiherunter.
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 |