Fülleffekt
Verwenden Sie den Blendeffekt, um 2 Bilder zu kombinieren. Dieser Effekt hat 26 Mischmodi.
Die CLSID für diesen Effekt ist CLSID_D2D1Blend.
- Beispiele für das Mischen
- Effekteigenschaften
- Mischmodi
- HSL-Farbraumkonvertierungen
- Ausgabe-Bitmap
- Beispielcode
- Anforderungen
- Zugehörige Themen
Beispiele für das Mischen
Hier sehen Sie ein Beispielbild für jeden Füllmodus des Blendeffekts. Eine vollständige Liste der Mischmodi und der entsprechenden Moduseigenschaften finden Sie im nächsten Abschnitt.
Hier sehen Sie 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 Indexaufzählung | BESCHREIBUNG |
---|---|
Mode D2D1_BLEND_PROP_MODE |
Der für den Effekt verwendete Mischmodus. Weitere Informationen finden Sie unter Mischmodi . Der Typ ist D2D1_BLEND_MODE. Der Standardwert ist D2D1_BLEND_MODE_MULTIPLY. |
Füllmethoden
Die folgende Tabelle zeigt alle Mischmodi dieses Effekts. 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
Hierbei gilt:
- OPRGB ist die vorab multiplizierte Ausgabefarbe
- OA ist Ausgabe alpha
- BRGB ist die nicht vor multiplizierte Zielfarbe
- BA ist Ziel-Alpha
- FRGB ist die nicht vor multiplizierte Quellfarbe
- FA ist Quell-Alpha
- f(SRGB, DRGB) ist eine Mischfunktion, die je nach Mischmodus variiert
Einige der Mischmodi erfordern eine Konvertierung in und aus dem Farbraum Farbton, Sättigung, Leuchtkraft (HSL) in RGB.
Enumeration | 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 | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_BURN | Grundlegende Mischungsformeln 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 | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_DODGE | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LIGHTER_COLOR | Einfache Mischungsformel nur für Alpha. |
D2D1_BLEND_MODE_OVERLAY | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_SOFT_LIGHT | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_HARD_LIGHT | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_VIVID_LIGHT | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_LIGHT | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_PIN_LIGHT | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_HARD_MIX | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = |
D2D1_BLEND_MODE_DIFFERENCE | Grundlegende Mischungsformeln mit f(FRGB, BRGB) = abs(FRGB - BRGB) |
D2D1_BLEND_MODE_EXCLUSION | Grundlegende Mischungsformeln 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. |
Hinweis
Bei allen Blend-Modi wird der Ausgabewert vormultipliziert und an den Bereich [0, 1] geklemmt.
HSL-Farbraumkonvertierungen
Die Luminosity-Komponente wird unter Verwendung der RGB-Gewichte berechnet:
- kR = 0,30
- kG = 0,59
- kB = 0,11
Konvertieren von RGB zu HSL
Dadurch werden S und L im Bereich [0,0, 1,0] und H im Bereich [-1,0, 5,0] platziert.
Konvertieren von HSL in RGB
Um die andere Art zu konvertieren, verwenden wir die Inverse der vorherigen Berechnungen.
Wenn S = 0, dann R = G = B = L
Andernfalls gibt es sechs Farbtonabhängige Fälle:
Wenn H größer als 0 ist, befinden sich die Werte im roten/magenta-Sektor, in dem R>B>G.
Wenn H größer oder gleich 0 und kleiner als 1 ist, befinden sich die Werte im rot/gelben Sektor, in dem R>G>B liegt.
Wenn H größer oder gleich 1 und kleiner als 2 ist, befinden sich die Werte im gelben/grünen Sektor, in dem G>R>B liegt.
Wenn H größer oder gleich 2 und kleiner als 3 ist, befinden sich die Werte im grün/cyan-Sektor, in dem G>B>R liegt.
Wenn H größer oder gleich 3 und kleiner als 4 ist, befinden sich die Werte im Cyan/Blau-Sektor, in dem B>G>R.
Wenn H größer als oder gleich 4 ist, befinden sich die Werte im blauen/magenta-Sektor, in dem B>R>G liegt.
Da die Füllmodi beliebige Kombinationen von HSL-Komponenten aus zwei verschiedenen Farben herstellen, ist es üblich, dass der konvertierte RGB-Wert außerhalb des Farbraums liegt, d. h. eine oder mehrere Kanalkomponenten können außerhalb des gesetzlichen Bereichs von [0.0, 1.0] liegen. Diese Farben werden wieder in den Farbraum gebracht, indem die Sättigung minimal reduziert wird, wobei sowohl Farbton als auch Leuchtkraft erhalten bleiben:
Ausgabe-Bitmap
Die Ausgabe-Bitmap für diesen Effekt ist immer die Größe der Union der beiden Eingabebilder.
Beispielcode
Laden Sie das Beispiel für zusammengesetzte Direct2D-Effektmodi herunter, um ein Beispiel für diesen Effekt zu erhalten.
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 |
Zugehörige Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für