Efekt złożony arytmetyczny
Użyj efektu arytmetycznego złożonego, aby połączyć 2 obrazy przy użyciu ważonej sumy pikseli z obrazów wejściowych.
Identyfikator CLSID dla tego efektu jest CLSID_D2D1ArithmeticComposite.
- Formuła
- przykładowy obraz
- właściwości Efekt
- danych bitowych wyjściowych
- wymagania dotyczące
- Tematy pokrewne
Formuła
Formuła w tym miejscu służy do obliczenia tego efektu.
Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Gdzie C1, C2, C3, C4 to ustawione współczynniki.
Współczynniki są mapować na wartości w D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Przykładowy obraz
Prostym przykładem jest dodanie pikseli źródłowych i docelowych. W tym przykładzie złożone są 2 zaokrąglone prostokąty. Prostokąt źródłowy jest niebieski, a miejsce docelowe jest czerwone.
Na poniższym obrazie przedstawiono dane wyjściowe efektu arytmetycznego złożonego z współczynnikami równania ustawionymi na wartości w tym miejscu.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Wynikiem jest dodanie wartości pikseli dla źródła i miejsca docelowego. Wszystkie regiony, w których prostokąty nie nakładają się na wartości RGBA, to 0. Gdzie prostokąty nakładają się na kolor magenta, ponieważ wartości R i B są równe maksymalne.
Oto kolejny przykładowy obraz z kodem.
Przed obrazem 1 |
---|
![]() |
Przed obrazem 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();
Właściwości efektu
Nazwa wyświetlana i wyliczenie indeksu | Opis |
---|---|
Współczynniki D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Współczynniki równania używane do tworzenia złożonych dwóch obrazów wejściowych. Współczynniki są bezjednostki i niezwiązane. Typ to D2D1_VECTOR_4F. Wartość domyślna to {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
Efekt zaciska wartości kolorów z zakresu od 0 do 1 przed przekazaniem wartości do następnego efektu na wykresie. Jeśli ustawisz wartość TRUE, efekt będzie zaciskać wartości. Jeśli ustawisz wartość FALSE, efekt nie zacisnie wartości kolorów, ale inne efekty, a powierzchnia wyjściowa może zacisać wartości, jeśli nie są wystarczająco precyzyjne. Typ to BOOL. Wartość domyślna to FALSE. |
Mapa bitowa wyjściowa
Mapa bitowa wyjściowa zależy od wartości współczynników. Są to możliwe rozmiary map bitowych wyjściowych.
- Jeśli C1 jest jedynym współczynnikem niezerowym, rozmiar danych wyjściowych jest przecięciem prostokątów wejściowych.
- Jeśli C2 jest jedynym współczynnikem niezerowym, rozmiar danych wyjściowych jest rozmiarem prostokąta źródłowego.
- Jeśli C3 jest jedynym współczynnikem niezerowym, rozmiar danych wyjściowych jest rozmiarem prostokąta Docelowego.
- Jeśli wszystkie współczynniki są zerowe, rozmiar danych wyjściowych jest pustym prostokątem.
- Dla wszystkich pozostałych wartości współczynników rozmiar danych wyjściowych jest unią prostokątów wejściowych.
Wymagania
Wymaganie | Wartość |
---|---|
Minimalny obsługiwany klient | Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows] |
Minimalny obsługiwany serwer | Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows] |
Nagłówek | d2d1effects.h |
Biblioteka | d2d1.lib, dxguid.lib |