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


Aritmetikai összetett effektus

Az aritmetikai összetett effektussal 2 képet egyesíthet a bemeneti képek súlyozott képpontösszegével.

Az effektus CLSID azonosítója CLSID_D2D1ArithmeticComposite.

Képlet

Az itt található képlet az effektus kiszámítására szolgál.

Kimenetirgba = C1 * Forrásrgba * Célrgba + C2 * Forrásrgba + C3 * Célrgba + C4

Ahol a C1, C2, C3, C4 együtthatók vannak megadva.

Az együtthatók egy D2D1_VECTOR_4F értékeire képeznek leképezést (x, y, z, w):

  • x = C1
  • y = C2
  • z = C3
  • w = C4

Példakép

Egy egyszerű példa a forrás- és cél képpontok hozzáadására. A példában két lekerekített téglalap van összeállítva. A forrás téglalapja kék, a cél pedig piros.

Az alábbi képen az Aritmetikai összetett effektus kimenete látható az itt megadott értékekre beállított egyenlet együtthatóival.

  • C1 = 0
  • C2 = 1
  • C3 = 1
  • C4 = 0

egy példaképet, amely két, azonos méretű, lekerekített téglalapot ábrázol, amelyek átfedésben vannak az aritmetikai összetett effektussal.

Az eredmény az, hogy a forrás és a cél képpontértékei hozzáadódnak. Azok a régiók, ahol a téglalapok nem fedik át az RGBA-értékeket, mind 0. Ahol a téglalapok átfedésben vannak a színnel, az magenta, mert az R és a B érték is maximális.

Íme egy másik példa kép kóddal.

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> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);

arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();

Effektus tulajdonságai

Név és index számbavételének megjelenítése Leírás
Együtthatók
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
A két bemeneti kép összevonásához használt egyenlet együtthatói. Az együtthatók egység nélküliek és kötetlenek. A típus D2D1_VECTOR_4F.
Alapértelmezett érték: {1.0f, 0.0f, 0.0f, 0.0f}.
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
Az effektus 0 és 1 közé szorítja a színértékeket, mielőtt az effektus átadja az értékeket a következő effektusnak a gráfban.
Ha igaz értékre állítja, az effektus az értékeket fogja szorítani. Ha HAMIS értékre állítja ezt be, az effektus nem fogja be a színértékeket, de más effektusok és a kimeneti felület is rögzítheti az értékeket, ha nem elég nagy pontosságúak.
A típus BOOL.
Az alapértelmezett érték HAMIS.

Kimeneti bitkép

A kimeneti bitkép a együttható értékeitől függ. Ezek a kimeneti bitképek lehetséges méretei.

  • Ha a C1 az egyetlen nem nulla együttható, a kimeneti méret a bemeneti téglalapok metszete.
  • Ha a C2 az egyetlen nem nulla együttható, a kimeneti méret a Forrás téglalap mérete.
  • Ha a C3 az egyetlen nem nulla együttható, a kimeneti méret a Cél téglalap mérete.
  • Ha minden együttható nulla, a kimeneti méret üres téglalap.
  • Az összes többi együtthatóérték esetében a kimeneti méret a bemeneti téglalapok egyesítését jelöli.

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