Freigeben über


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.

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.

Effektbeispielfoto aller verfügbaren Blendmodi.

Hier ist ein weiteres Beispiel für die Verwendung des Ausschlussmodus.

Vor Bild 1
das erste Quellbild vor dem Effekt aus.
Vor Bild 2
das zweite Bild vor dem Effekt.
Nach
das Bild nach der Transformation.
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. mathematische Formel für einen dunklen Effekt.
D2D1_BLEND_MODE_MULTIPLY Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Multiplikationseffekt.
D2D1_BLEND_MODE_COLOR_BURN Einfache Mischungsformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen Koorbrandeffekt.
D2D1_BLEND_MODE_LINEAR_BURN Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen linearen Brenneffekt.
D2D1_BLEND_MODE_DARKER_COLOR Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen dunklen Farbeffekt.
D2D1_BLEND_MODE_LIGHTEN Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Aufhellungseffekt.
D2D1_BLEND_MODE_SCREEN Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Bildschirmeffekt.
D2D1_BLEND_MODE_COLOR_DODGE Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen Farbdgeeffekt.
D2D1_BLEND_MODE_LINEAR_DODGE Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen linearen Verschiebeeffekt.
D2D1_BLEND_MODE_LIGHTER_COLOR Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen helleren Farbeffekt.
D2D1_BLEND_MODE_OVERLAY Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen Überlagerungseffekt.
D2D1_BLEND_MODE_SOFT_LIGHT Einfache Mischungsformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen weichen Lichteffekt.
D2D1_BLEND_MODE_HARD_LIGHT Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen harten Lichteffekt.
D2D1_BLEND_MODE_VIVID_LIGHT Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen lebendigen Lichteffekt.
D2D1_BLEND_MODE_LINEAR_LIGHT Einfache Blendformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen linearen Lichteffekt.
D2D1_BLEND_MODE_PIN_LIGHT Einfache Mischungsformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen Pinlichteffekt.
D2D1_BLEND_MODE_HARD_MIX Einfache Mischungsformeln mit f(FRGB-, BRGB-) = Mathematische Formel für einen harten Mixeffekt.
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. Mathematische Formel für einen Farbtonmischungseffekt.
D2D1_BLEND_MODE_SATURATION Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Sättigungsmischungseffekt.
D2D1_BLEND_MODE_COLOR Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Farbmischungseffekt.
D2D1_BLEND_MODE_LUMINOSITY Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Leuchtdichte-Blendeffekt.
D2D1_BLEND_MODE_DISSOLVE Gegeben:
  • Eine Szenenkoordinate XY für das aktuelle Pixel
  • Ein deterministischer Pseudo-Zufallszahlengenerator rand(XY) basierend auf der Seedkoordinate XY, wobei eine unvoreingenommene Verteilung von Werten von [0, 1]

Mathematische Formel für einen Auflösungsmischungseffekt.
D2D1_BLEND_MODE_SUBTRACT Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen subtrahieren Blendeffekt.
D2D1_BLEND_MODE_DIVISION Einfache Mischungsformel nur für Alpha. Mathematische Formel für einen Teilungsmischungseffekt.

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

mathematische Formel, die die Transformation von RGB-Farbe in hsl-Farbe beschreibt.

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.

mathematischen Äquaitonschritt einer von sechs Konvertierungs-HSL-Farben in RGB.

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.

mathematischen Äquaitonschritt 2 von sechs Konvertierungs-HSL-Farben in RGB.

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.

mathematischen Äquaitonschritt 3 von sechs konvertierungen HSL-Farbe in RGB.

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.

mathematischen Äquaitonschritt vier von sechs Konvertierungs-HSL-Farben in RGB.

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.

mathematischen Äquaitonschritt 5 von sechs konvertierungen HSL-Farbe in RGB.

Wenn H- größer als oder gleich 4 ist, befinden sich die Werte im Blau-Magenta-Sektor, in dem B>R>G.

mathematischen Äquaitonschritt sechs von sechs konvertierungen HSL-Farbe in RGB.

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:

mathematische Formel, die die korrekturen beschreibt, die für außerhalb von Gamutinstanzen erforderlich sind.

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

ID2D1Effect-