Delen via


Mengeffect

Gebruik het blend-effect om 2 afbeeldingen te combineren. Dit effect heeft 26 mengmodi.

De CLSID voor dit effect is CLSID_D2D1Blend.

Voorbeelden van blending

Hier volgt een voorbeeldafbeelding van elke blendmodus van het blend-effect. Een volledige lijst met de blendmodi en de bijbehorende moduseigenschappen vindt u in de volgende sectie

voorbeeldschermopname van alle beschikbare blendmodi.

Hier volgt nog een voorbeeld van het gebruik van de uitsluitingsmodus.

Voor afbeelding 1
de eerste bronafbeelding vóór het effect.
Voor afbeelding 2
de tweede afbeelding vóór het effect.
Na
de afbeelding na de transformatie.
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();

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
Wijze
D2D1_BLEND_PROP_MODE
De mengmodus die wordt gebruikt voor het effect. Zie Blend-modi voor meer informatie. Het type is D2D1_BLEND_MODE.
De standaardwaarde is D2D1_BLEND_MODE_MULTIPLY.

Blend-modi

In de tabel ziet u alle blendmodi van dit effect. De helperfuncties die nodig zijn om de uitvoer van het effect te berekenen, vindt u in de volgende sectie.

Kleur: OPRGB = f(FRGB-, BRGB-) * FA * BA + FRGB * FA * (1 - BA) + BRGB- * BA * (1 - FA)

Alfa: OA = FA * (1 - BA) + BA

Waar:

  • OPRGB- is de vooraf vermenigvuldigde uitvoerkleur
  • OA is Output Alpha
  • BRGB- is de niet-vooraf vermenigvuldigde doelkleur
  • BA- is doel alfa
  • FRGB- is de niet-vooraf vermenigvuldigde bronkleur
  • FA- is bron alfa
  • f(SRGB-, DRGB-) is een mixfunctie die per mixmodus varieert

Sommige van de blendmodi vereisen conversie van en naar de kleurruimte hue, verzadiging, helderheid (HSL) naar RGB.

Opsomming Vergelijking
D2D1_BLEND_MODE_DARKEN Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een donkerder effect.
D2D1_BLEND_MODE_MULTIPLY Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een vermenigvuldigingseffect.
D2D1_BLEND_MODE_COLOR_BURN Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een coorbrandeffect.
D2D1_BLEND_MODE_LINEAR_BURN Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een lineair brandeffect.
D2D1_BLEND_MODE_DARKER_COLOR Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een donkerder kleureffect.
D2D1_BLEND_MODE_LIGHTEN Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een licht effect.
D2D1_BLEND_MODE_SCREEN Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een schermeffect.
D2D1_BLEND_MODE_COLOR_DODGE Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een kleurend ontwijkeffect.
D2D1_BLEND_MODE_LINEAR_DODGE Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een lineair ontwijkeffect.
D2D1_BLEND_MODE_LIGHTER_COLOR Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een lichter kleureneffect.
D2D1_BLEND_MODE_OVERLAY Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een overlay-effect.
D2D1_BLEND_MODE_SOFT_LIGHT Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een zacht lichteffect.
D2D1_BLEND_MODE_HARD_LIGHT Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een hard lichteffect.
D2D1_BLEND_MODE_VIVID_LIGHT Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een levendig lichteffect.
D2D1_BLEND_MODE_LINEAR_LIGHT Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een lineair lichteffect.
D2D1_BLEND_MODE_PIN_LIGHT Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een pinlichteffect.
D2D1_BLEND_MODE_HARD_MIX Basisformules combineren met f(FRGB-, BRGB-) = Wiskundige formule voor een hard mixeffect.
D2D1_BLEND_MODE_DIFFERENCE Basisformules combineren met f(FRGB-, BRGB-) = abs(FRGB- - BRGB-)
D2D1_BLEND_MODE_EXCLUSION Basisformules combineren met f(FRGB-, BRGB-) = FRGB- + BRGB- 2 * FRGB- * BRGB-
D2D1_BLEND_MODE_HUE Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een tintmixeffect.
D2D1_BLEND_MODE_SATURATION Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een verzadigingsmengingseffect.
D2D1_BLEND_MODE_COLOR Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een kleurenmixeffect.
D2D1_BLEND_MODE_LUMINOSITY Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een helderheidsmixeffect.
D2D1_BLEND_MODE_DISSOLVE Gegeven:
  • Een scène coördineert XY voor de huidige pixel
  • Een deterministische pseudo-willekeurige getalgeneratorrand (XY) op basis van seedcoördinaat XY, met een onbevooroordeerde verdeling van waarden van [0, 1]

wiskundige formule voor een opgelost mengseleffect.
D2D1_BLEND_MODE_SUBTRACT Eenvoudige blendformule voor alleen alfa. Wiskundige formule voor een aftrekkend mengeffect.
D2D1_BLEND_MODE_DIVISION Eenvoudige blendformule voor alleen alfa. wiskundige formule voor een delingsmixeffect.

Notitie

Voor alle Blend-modi wordt de uitvoerwaarde vooraf gepremultiplied en vastgeklemd aan het bereik [0, 1].

HSL-kleurruimteconversies

Het luminositeitsonderdeel wordt berekend met behulp van de RGB-gewichten hier:

  • kR = 0,30
  • kG = 0,59
  • kB = 0,11

Converteren van RGB naar HSL

wiskundige formule die de transformatie beschrijft van rgb-kleur naar hsl-kleur.

Dit plaatst S en L in het bereik [0,0, 1.0] en H in het bereik [-1.0, 5.0].

Converteren van HSL naar RGB

Als u de andere manier wilt converteren, gebruiken we de inverse van de vorige berekeningen.

Als S = 0, R = G = B = L

Anders zijn er zes hue-afhankelijke gevallen:

Als H- groter is dan 0, bevinden de waarden zich in de rode/magenta-sector waarbij R>B>G.

wiskundige equaiton stap één van zes van de conversie van hsl-kleur naar rgb.

Als H- groter is dan of gelijk is aan 0 en kleiner dan 1, bevinden de waarden zich in de rode/gele sector waarbij R>G>B-.

wiskundige equaiton stap twee van zes converteren van hsl-kleur naar rgb.

Als H- groter is dan of gelijk is aan 1 en kleiner dan 2, bevinden de waarden zich in de gele/groene sector waarbij G>R>B.

wiskundige equaiton stap drie van zes converterende hsl-kleur naar rgb.

Als H groter is dan of gelijk is aan 2 en kleiner dan 3, bevinden de waarden zich in de groene/cyaan sector waarbij G>B>R.

wiskundige equaiton stap vier van zes converterende hsl-kleur naar rgb.

Als H groter is dan of gelijk is aan 3 en kleiner dan 4, bevinden de waarden zich in de cyaan/blauwe sector waar B>G>R-.

wiskundige equaiton stap vijf van zes converterende hsl-kleur naar rgb.

Als H- groter is dan of gelijk is aan 4, bevinden de waarden zich in de blauwe/magenta-sector waar B>R>G.

wiskundige equaiton stap zes van zes converterende hsl-kleur naar rgb.

Omdat de mengmodi willekeurige combinaties maken van HSL-onderdelen uit twee verschillende kleuren, is het gebruikelijk dat de geconverteerde RGB-waarde buiten het bereik valt, dat wil gezegd dat een of meer kanaalonderdelen buiten het juridische bereik van [0.0, 1.0] vallen. Deze kleuren worden teruggebracht in het gamut door de verzadiging minimaal te verminderen, terwijl zowel tinten als helderheid behouden blijven:

wiskundige formule waarin de correcties worden beschreven die nodig zijn voor niet-mutexemplaren.

Uitvoer bitmap

De uitvoer bitmap voor dit effect is altijd de grootte van de samenvoeging van de twee invoerafbeeldingen.

Voorbeeldcode

Voor een voorbeeld van dit effect downloadt u de voorbeeld-van deDirect2D-samengestelde effectmodi.

Eisen

Eis Waarde
Minimaal ondersteunde client Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Minimaal ondersteunde server Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Rubriek d2d1effects.h
Bibliotheek d2d1.lib, dxguid.lib

ID2D1Effect-