Efekt mapy przemieszczenia
Użyj efektu mapy przemieszczania, aby przesiąść piksele obrazu wejściowego przez wartości intensywności drugiego obrazu wejściowego.
Identyfikator CLSID dla tego efektu jest CLSID_D2D1DisplacementMap.
- przykładowy obraz
- właściwości Efekt
- kanałów Color
- wyjściowych map bitowych
- wymagania dotyczące
- Tematy pokrewne
Przykładowy obraz
Przed |
---|
![]() |
Po |
![]() |
ComPtr<ID2D1Effect> displacementMapEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DisplacementMap, &displacementMapEffect);
displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);
// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(displacementMapEffect.Get());
m_d2dContext->EndDraw();
Lokalizacje pikseli w danych wyjściowych są określane przy użyciu następującej formuły:
C' (x,y)=C(x+ scale*(XChannelSelector(Mapa bitowa przemieszczania (x,y))-0,5),y+ scale*(YChannelSelector(Mapa bitowa przemieszczania (x,y)-0,5))
Gdzie:
-
C (x, y) to piksel wyjściowy (x, y).
C (x, y) jest pikselem wejściowym (x, y).
mapa bitowa przemieszczenia (x, y) jest intensywnością pikseli przemieszczenia na określonych współrzędnych
XChannelSelector intensywność wybranego kanału RGBA z mapy bitowej przemieszczenia, która wypiera obraz wejściowy w kierunku X.
YChannelSelector intensywność wybranego kanału RGBA z mapy bitowej przemieszczenia, która wypiera obraz wejściowy w kierunku Y.
Efekt zmienia próbkę obrazu wejściowego zgodnie z właściwością scale i intensywnością obrazu przemieszczenia. Używa interpolacji dwuliniowej, jeśli próbkowanie z między pikselami w obrazie wejściowym.
Ten efekt działa na prostych i premultiplied obrazów alfa. Format alfa danych wyjściowych jest taki sam jak format wejściowy.
Właściwości efektu
Nazwa wyświetlana i wyliczenie indeksu | Typ i wartość domyślna | Opis |
---|---|---|
Skala D2D1_DISPLACEMENTMAP_PROP_SCALE |
SPŁAWIK 0.0f |
Mnoży intensywność wybranego kanału z obrazu przemieszczenia. Im wyższa właściwość zostanie ustawiona, tym więcej efektu powoduje przesunięcie pikseli |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Efekt wyodrębnia intensywność z tego kanału kolorów i używa go do przestrzennego przesiedlania obrazu w kierunku X. Aby uzyskać więcej informacji, zobacz Kanały kolorów. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Efekt wyodrębnia intensywność z tego kanału kolorów i używa go do przestrzennego wypierania obrazu w kierunku Y. Aby uzyskać więcej informacji, zobacz Kanały kolorów. |
Kanały kolorów
Wyliczenie | Opis |
---|---|
D2D1_CHANNEL_SELECTOR_R | Efekt wyodrębnia dane wyjściowe intensywności z czerwonego kanału. |
D2D1_CHANNEL_SELECTOR_G | Efekt wyodrębnia dane wyjściowe intensywności z zielonego kanału. |
D2D1_CHANNEL_SELECTOR_B | Efekt wyodrębnia dane wyjściowe intensywności z niebieskiego kanału. |
D2D1_CHANNEL_SELECTOR_A | Efekt wyodrębnia dane wyjściowe intensywności z kanału alfa. |
Mapa bitowa danych wyjściowych
Możesz określić maksymalny rozmiar mapy bitowej danych wyjściowych przy użyciu następujących równań:
Mapa bitowa danych wyjściowych? Pixel=(Rozmiar mapy bitowej wejściowej?( DIPs)+Scale)*(User DPI/96)
Output Bitmapy Pixel=(Rozmiar mapy bitowej wejściowejy(DIPs) + Scale)*(User DPI/96)
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 |