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
- eigenschappen van effect
- Blend-modi
- HSL-kleurruimteconversies
- uitvoer bitmap
- voorbeeldcode
- vereisten
- Verwante onderwerpen
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
Hier volgt nog een voorbeeld van het gebruik van de uitsluitingsmodus.
Voor afbeelding 1 |
---|
![]() |
Voor afbeelding 2 |
![]() |
Na |
![]() |
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.
![]() |
D2D1_BLEND_MODE_MULTIPLY | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_COLOR_BURN | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_BURN | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_DARKER_COLOR | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_LIGHTEN | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_SCREEN | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_COLOR_DODGE | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_DODGE | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LIGHTER_COLOR | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_OVERLAY | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_SOFT_LIGHT | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_HARD_LIGHT | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_VIVID_LIGHT | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_LINEAR_LIGHT | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_PIN_LIGHT | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
D2D1_BLEND_MODE_HARD_MIX | Basisformules combineren met f(FRGB-, BRGB-) = ![]() |
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.
![]() |
D2D1_BLEND_MODE_SATURATION | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_COLOR | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_LUMINOSITY | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_DISSOLVE | Gegeven:
![]() |
D2D1_BLEND_MODE_SUBTRACT | Eenvoudige blendformule voor alleen alfa.
![]() |
D2D1_BLEND_MODE_DIVISION | Eenvoudige blendformule voor alleen alfa.
![]() |
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
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.
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-.
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.
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.
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-.
Als H- groter is dan of gelijk is aan 4, bevinden de waarden zich in de blauwe/magenta-sector waar B>R>G.
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:
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 |