Megosztás a következőn keresztül:


Keverési effektus

A keverési effektus használatával 2 képet egyesíthet. Ez az effektus 26 keverési móddal rendelkezik.

Az effektus CLSID azonosítója CLSID_D2D1Blend.

Példák keverése

Íme egy példa a keverési effektus összes keverési módjára. A keverési módok és a megfelelő módtulajdonságok teljes listája a következő szakaszban található

példaeffektus képernyőképe az összes elérhető keverési módról.

Íme egy másik példa a kizárási mód használatával.

1. kép előtt
az első forrásképet az effektus előtt.
2. kép előtt
a második képet az effektus előtt.
Után
a képet az átalakítás után.
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();

Effektus tulajdonságai

Név és index számbavételének megjelenítése Leírás
Üzemmód
D2D1_BLEND_PROP_MODE
Az effektushoz használt keverési mód. További információért lásd keverési módokat. A típus D2D1_BLEND_MODE.
Az alapértelmezett érték D2D1_BLEND_MODE_MULTIPLY.

Keverési módok

Az alábbi táblázat ennek az effektusnak az összes keverési módjait mutatja be. Az effektus kimenetének kiszámításához szükséges segédfüggvények a következő szakaszban találhatók.

Szín: OPRGB = f(FRGB, BRGB) * FA * BA + FR GB * FA * (1 – BA) + BRGB * BA * (1 – FA)

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

Hol:

  • OPRGB az előre szorzott kimeneti szín
  • OA az Alfa kimenet
  • BRGB az előre nem szorzott célszín
  • BA a cél alfa
  • FRGB a nem előre szorzott forrásszín
  • FA forrás alfa
  • f(SRGB, DRGB) egy keverési függvény, amely keverési módonként eltérő

Egyes keverési módokhoz az árnyalat, a telítettség, a fényesség (HSL) színterének RGB-re való konvertálása szükséges.

Felsorolás Egyenlet
D2D1_BLEND_MODE_DARKEN Alapszintű keverékképlet csak alfa esetén. matematikai képletet a sötétítő hatáshoz.
D2D1_BLEND_MODE_MULTIPLY Alapszintű keverékképlet csak alfa esetén. Szorzási effektus matematikai képlete.
D2D1_BLEND_MODE_COLOR_BURN Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet a koor-égési effektushoz.
D2D1_BLEND_MODE_LINEAR_BURN Alapszintű keverékképletek f(FRGB, BRGB) = Lineáris égési effektus matematikai képlete.
D2D1_BLEND_MODE_DARKER_COLOR Alapszintű keverékképlet csak alfa esetén. Matematikai képlet sötét színeffektushoz.
D2D1_BLEND_MODE_LIGHTEN Alapszintű keverékképlet csak alfa esetén. Matematikai képlet a világosító hatás érdekében.
D2D1_BLEND_MODE_SCREEN Alapszintű keverékképlet csak alfa esetén. Képernyőeffektus matematikai képlete.
D2D1_BLEND_MODE_COLOR_DODGE Alapszintű keverékképletek f(FRGB, BRGB) = Színtűrő effektus matematikai képlete.
D2D1_BLEND_MODE_LINEAR_DODGE Alapszintű keverékképletek f(FRGB, BRGB) = Lineáris kitérőeffektus matematikai képlete.
D2D1_BLEND_MODE_LIGHTER_COLOR Alapszintű keverékképlet csak alfa esetén. Világosabb színeffektus matematikai képlete.
D2D1_BLEND_MODE_OVERLAY Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet átfedéseffektushoz.
D2D1_BLEND_MODE_SOFT_LIGHT Alapszintű keverékképletek f(FRGB, BRGB) = Enyhe fényhatású matematikai képlet.
D2D1_BLEND_MODE_HARD_LIGHT Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet a kemény fényhatáshoz.
D2D1_BLEND_MODE_VIVID_LIGHT Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet élénk fényeffektushoz.
D2D1_BLEND_MODE_LINEAR_LIGHT Alapszintű keverékképletek f(FRGB, BRGB) = Lineáris fényeffektus matematikai képlete.
D2D1_BLEND_MODE_PIN_LIGHT Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet a tűfényeffektushoz.
D2D1_BLEND_MODE_HARD_MIX Alapszintű keverékképletek f(FRGB, BRGB) = Matematikai képlet a kemény keverési effektushoz.
D2D1_BLEND_MODE_DIFFERENCE Alapszintű keverékképletek f(FRGB, BRGB) = abs(FRGB – BRGB)
D2D1_BLEND_MODE_EXCLUSION Alapszintű keverékképletek f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB
D2D1_BLEND_MODE_HUE Alapszintű keverékképlet csak alfa esetén. Színkeverés effektus matematikai képlete.
D2D1_BLEND_MODE_SATURATION Alapszintű keverékképlet csak alfa esetén. Telítettségi keverék effektus matematikai képlete.
D2D1_BLEND_MODE_COLOR Alapszintű keverékképlet csak alfa esetén. Színkeverés effektus matematikai képlete.
D2D1_BLEND_MODE_LUMINOSITY Alapszintű keverékképlet csak alfa esetén. Fénykeverés effektus matematikai képlete.
D2D1_BLEND_MODE_DISSOLVE Adott:
  • Jelenetkoordináta XY az aktuális képponthoz
  • Determinisztikus pszeudo-véletlenszerű számgenerátor (XY) xY magkoordináta alapján, a [0, 1] értékek elfogulatlan eloszlásával

feloldó effektus matematikai képlete.
D2D1_BLEND_MODE_SUBTRACT Alapszintű keverékképlet csak alfa esetén. kivonási effektus matematikai képlete.
D2D1_BLEND_MODE_DIVISION Alapszintű keverékképlet csak alfa esetén. osztáskeverés effektus matematikai képlete.

Jegyzet

Az összes keverési mód esetében a kimeneti érték előre ki van jelölve, és a tartományhoz van rögzítve [0, 1].

HSL színtérátalakítások

A fényességi összetevőt az alábbi RGB-súlyokkal számítjuk ki:

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

Konvertálás RGB-ről HSL-re

matematikai képlet, amely leírja az rgb színről hsl színre való átalakítást.

Ez S és L a tartományba helyezi [0.0, 1.0] és H a tartományban [-1.0, 5.0].

Konvertálás HSL-ről RGB-re

A másik átalakításhoz az előző számítások inverzét használjuk.

Ha S = 0, akkor R = G = B = L

Ellenkező esetben hat árnyalatfüggő eset van:

Ha H 0-nál nagyobb, az értékek a vörös/magenta szektorban vannak, ahol R>B>G.

matematikai egyenrangúság a hatból az első lépés, amely a hsl színt rgb-ra konvertálja.

Ha H 0-nál nagyobb vagy egyenlő 1-nél, az értékek a piros/sárga szektorban vannak, ahol R>G>B.

matematikai equaiton második lépése a hat konvertáló hsl szín rgb.

Ha H 1-nél nagyobb vagy egyenlő 2-nél, az értékek a sárga/zöld szektorban vannak, ahol G>R>B.

matematikai egyenrangúság a hatból a harmadik lépésből, amely a hsl színt rgb-ra konvertálja.

Ha H 2-nél nagyobb vagy egyenlő 3-nál, az értékek a zöld/cián szektorban vannak, ahol G>B>R.

matematikai egyenrangúság a hatból négy lépésből, amely a hsl színt rgb-ra konvertálja.

Ha H 3-nál nagyobb vagy egyenlő 4-nél, akkor az értékek abban a cián/kék szektorban vannak, ahol B>G>R.

matematikai egyenrangúság a hatból öt lépésből, amely a hsl színt rgb-ra konvertálja.

Ha H nagyobb vagy egyenlő 4-nél, az értékek a kék/magenta szektorban vannak, ahol B>R>G.

matematikai egyenrangúság a hatból hatból, a hsl színét rgb-ra konvertálva.

Mivel a keverési módok a HSL-összetevők tetszőleges kombinációit két különböző színből készítik, gyakran előfordul, hogy a konvertált RGB-érték el nem érhető, vagyis egy vagy több csatornaösszetevő kívül esik a [0.0, 1.0] jogi tartományon. Ezek a színek a telítettség minimális csökkentésével visszakerülnek a színtérbe, miközben megőrzik az árnyalatot és a fényességet:

el nem használt példányokhoz szükséges korrekciókat leíró matematikai képlet.

Kimeneti bitkép

Az effektus kimeneti bitképe mindig a két bemeneti lemezkép egyesítésének mérete.

Mintakód

Erre az effektusra példaként töltse le a Direct2D összetett effektusmódok mintáját.

Követelmények

Követelmény Érték
Minimálisan támogatott ügyfél Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Minimálisan támogatott kiszolgáló Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Fejléc d2d1effects.h
Könyvtár d2d1.lib, dxguid.lib

ID2D1Effect