Aritmetický složený efekt
Pomocí aritmetického složeného efektu můžete zkombinovat 2 obrázky pomocí váženého součtu pixelů ze vstupních obrázků.
CLSID pro tento efekt je CLSID_D2D1ArithmeticComposite.
Vzorec
Vzorec zde slouží k výpočtu tohoto efektu.
Výstupnírgba = C1 * Zdrojovárgba * Cílovárgba + C2 * Zdrojrgba + C3 * Cílovárgba + C4
Kde C1, C2, C3, C4 jsou koeficienty, které nastavíte.
Koeficienty se mapují na hodnoty v D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Příklad obrázku
Jednoduchým příkladem je přidání zdrojových a cílových pixelů. V příkladu jsou 2 zaoblené obdélníky složené dohromady. Zdrojový obdélník je modrý a cíl je červený.
Obrázek zde je výstup aritmetického složeného efektu s koeficienty rovnice nastavenými na hodnoty zde.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Výsledkem je přidání hodnot pixelů pro zdroj a cíl. Oblasti, ve kterých se obdélníky nepřekrývají, jsou všechny hodnoty RGBA 0. Pokud se obdélníky překrývají, barva je purpurová, protože hodnoty R a B jsou maximální.
Tady je další příklad obrázku s kódem.
Před obrázkem 1 |
---|
![]() |
Před obrázkem 2 |
![]() |
Po |
![]() |
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();
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Popis |
---|---|
Koeficienty D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Koeficienty rovnice použité ke složení dvou vstupních obrázků. Koeficienty jsou bez jednotkové a nevázané. Typ je D2D1_VECTOR_4F. Výchozí hodnota je {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
Efekt upne hodnoty barev mezi 0 a 1, než efekt předá hodnoty dalšímu efektu v grafu. Pokud nastavíte hodnotu TRUE, efekt uchytne hodnoty. Pokud nastavíte hodnotu NEPRAVDA, efekt neuchytne hodnoty barev, ale jiné efekty a výstupní povrch mohou upnout hodnoty, pokud nejsou dostatečně vysoké přesnosti. Typ je BOOL. Výchozí hodnota je FALSE. |
Výstupní rastrový obrázek
Výstupní rastrový obrázek závisí na hodnotách koeficientu. Toto jsou možné velikosti výstupních rastrových obrázků.
- Pokud je C1 jediným nenulovým koeficientem, je výstupní velikost průsečíkem vstupních obdélníků.
- Pokud je C2 jediným nenulovým koeficientem, je velikost výstupu velikost obdélníku Zdroj.
- Pokud je C3 jediný nenulový koeficient, velikost výstupu je velikost cílového obdélníku..
- Pokud jsou všechny koeficienty nulové, je velikost výstupu prázdný obdélník.
- Pro všechny ostatní hodnoty koeficientu je výstupní velikost sjednocení vstupních obdélníků.
Požadavky
Požadavek | Hodnota |
---|---|
Minimální podporovaný klient | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Minimální podporovaný server | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Záhlaví | d2d1effects.h |
Knihovna | d2d1.lib, dxguid.lib |