Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |