Udostępnij za pośrednictwem


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

Przed
obraz przed efektem.
Po
obraz po przekształceniu.
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

ID2D1Effect