Dela via


Blandningseffekt

Använd blandningseffekten för att kombinera 2 bilder. Den här effekten har 26 blandningslägen.

CLSID för den här effekten är CLSID_D2D1Blend.

Blandningsexempel

Här är en exempelbild av varje blandningsläge i blandningseffekten. En fullständig lista över blandningslägena och motsvarande lägesegenskaper finns i nästa avsnitt

exempel på skärmbild av alla tillgängliga blandningslägen.

Här är ett annat exempel med undantagsläget.

Före bild 1
den första källbilden före effekten.
Före bild 2
den andra bilden före effekten.
Efter
bilden efter transformen.
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();

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
Läge
D2D1_BLEND_PROP_MODE
Blandningsläget som används för effekten. Mer information finns i Blandningslägen. Typen är D2D1_BLEND_MODE.
Standardvärdet är D2D1_BLEND_MODE_MULTIPLY.

Blandningslägen

Tabellen här visar alla blandningslägen för den här effekten. De hjälpfunktioner som krävs för att beräkna effektens utdata finns i nästa avsnitt.

Färg: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)

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

Var:

  • OPRGB- är den förplikerade utdatafärgen
  • OEn är utdata alfa
  • BRGB- är den ofördubblade målfärgen
  • BEn är mål alfa
  • FRGB- är den ofördubblade källfärgen
  • FEn är käll-alfa
  • f(SRGB, DRGB) är en blandningsfunktion som varierar per blandningsläge

Vissa av blandningslägena kräver konvertering till och från färgrymden nyans, mättnad, ljusstyrka (HSL) till RGB.

Uppräkning Ekvation
D2D1_BLEND_MODE_DARKEN Grundläggande blandningsformel endast för alfa. matematisk formel för en mörkare effekt.
D2D1_BLEND_MODE_MULTIPLY Grundläggande blandningsformel endast för alfa. matematisk formel för en multiplikationseffekt.
D2D1_BLEND_MODE_COLOR_BURN Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en coor burn-effekt.
D2D1_BLEND_MODE_LINEAR_BURN Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för linjär bränningseffekt.
D2D1_BLEND_MODE_DARKER_COLOR Grundläggande blandningsformel endast för alfa. matematisk formel för en mörkare färgeffekt.
D2D1_BLEND_MODE_LIGHTEN Grundläggande blandningsformel endast för alfa. matematisk formel för en ljusare effekt.
D2D1_BLEND_MODE_SCREEN Grundläggande blandningsformel endast för alfa. matematisk formel för en skärmeffekt.
D2D1_BLEND_MODE_COLOR_DODGE Grundläggande blandningsformler med f(FRGB, BRGB) = matematisk formel för en färgsmitningseffekt.
D2D1_BLEND_MODE_LINEAR_DODGE Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en linjär dodge-effekt.
D2D1_BLEND_MODE_LIGHTER_COLOR Grundläggande blandningsformel endast för alfa. matematisk formel för en ljusare färgeffekt.
D2D1_BLEND_MODE_OVERLAY Grundläggande blandningsformler med f(FRGB, BRGB) = matematisk formel för en överläggseffekt.
D2D1_BLEND_MODE_SOFT_LIGHT Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en mjuk ljuseffekt.
D2D1_BLEND_MODE_HARD_LIGHT Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för hård ljuseffekt.
D2D1_BLEND_MODE_VIVID_LIGHT Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en levande ljuseffekt.
D2D1_BLEND_MODE_LINEAR_LIGHT Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en linjär ljuseffekt.
D2D1_BLEND_MODE_PIN_LIGHT Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en pin-ljuseffekt.
D2D1_BLEND_MODE_HARD_MIX Grundläggande blandningsformler med f(FRGB, BRGB) = Matematisk formel för en hård blandningseffekt.
D2D1_BLEND_MODE_DIFFERENCE Grundläggande blandningsformler med f(FRGB, BRGB) = abs(FRGB - BRGB)
D2D1_BLEND_MODE_EXCLUSION Grundläggande blandningsformler med f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB
D2D1_BLEND_MODE_HUE Grundläggande blandningsformel endast för alfa. matematisk formel för en nyansblandningseffekt.
D2D1_BLEND_MODE_SATURATION Grundläggande blandningsformel endast för alfa. matematisk formel för en mättnadsblandningseffekt.
D2D1_BLEND_MODE_COLOR Grundläggande blandningsformel endast för alfa. matematisk formel för en färgblandningseffekt.
D2D1_BLEND_MODE_LUMINOSITY Grundläggande blandningsformel endast för alfa. matematisk formel för en luminositetsblandningseffekt.
D2D1_BLEND_MODE_DISSOLVE Given:
  • En scenkoordinat XY för den aktuella pixeln
  • En deterministisk pseudo-slumptalsgenerator(XY) baserad på frökoordinat XY, med opartisk fördelning av värden från [0, 1]

matematisk formel för en lösningsblandningseffekt.
D2D1_BLEND_MODE_SUBTRACT Grundläggande blandningsformel endast för alfa. matematisk formel för en subtrahera blandningseffekt.
D2D1_BLEND_MODE_DIVISION Grundläggande blandningsformel endast för alfa. matematisk formel för en divisionsblandningseffekt.

Not

För alla blandningslägen är utdatavärdet premultiplied och fastklämt till intervallet [0, 1].

HSL-färgrymdskonverteringar

Luminositetskomponenten beräknas med RGB-vikterna här:

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

Konvertera från RGB till HSL

matematisk formel som beskriver omvandlingen från rgb-färg till hsl-färg.

Detta placerar S och L i intervallet [0,0, 1,0] och H i intervallet [-1.0, 5.0].

Konvertera från HSL till RGB

Om du vill konvertera det andra sättet använder vi invertering av tidigare beräkningar.

Om S = 0 R = G = B = L

Annars finns det sex nyansberoende fall:

Om H är större än 0 finns värdena i sektorn röd/magenta där R>B>G.

matematiska ekvatorn steg ett av sex konvertera hsl färg till rgb.

Om H- är större än eller lika med 0 och mindre än 1 finns värdena i den röda/gula sektorn där R>G>B.

matematisk equaiton steg två av sex konvertera hsl färg till rgb.

Om H- är större än eller lika med 1 och mindre än 2 finns värdena i den gula/gröna sektorn där G>R>B.

matematisk equaiton steg tre av sex konvertera hsl färg till rgb.

Om H- är större än eller lika med 2 och mindre än 3 finns värdena i den gröna/cyanska sektorn där G>B>R.

matematisk equaiton steg fyra av sex konvertera hsl färg till rgb.

Om H- är större än eller lika med 3 och mindre än 4 finns värdena i cyan/blå sektorn där B>G>R.

matematisk equaiton steg fem av sex konvertera hsl färg till rgb.

Om H är större än eller lika med 4 finns värdena i sektorn blue/magenta där B>R>G.

matematisk equaiton steg sex av sex konvertera hsl färg till rgb.

Eftersom blandningslägena gör godtyckliga kombinationer av HSL-komponenter från två olika färger är det vanligt att det konverterade RGB-värdet är out-of-gamut, dvs. en eller flera kanalkomponenter kan ligga utanför det juridiska intervallet [0.0, 1.0]. Dessa färger förs tillbaka i omfång genom att minimalt minska mättnad, samtidigt som både nyans och ljusstyrka bevaras:

matematisk formel som beskriver de korrigeringar som krävs för out-of-gamut-instanser.

Utdatabitmapp

Utdatabitmappen för den här effekten är alltid storleken på unionen för de två indatabilderna.

Exempelkod

Om du vill ha ett exempel på den här effekten laddar du ned exempel på Direct2D-sammansatta effektlägen.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect