Effetto mappa di spostamento
Usare l'effetto mappa di spostamento per spostare i pixel dell'immagine di input in base ai valori di intensità di una seconda immagine di input.
Il CLSID per questo effetto è CLSID_D2D1DisplacementMap.
Immagine di esempio
Prima |
---|
![]() |
Dopo |
![]() |
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();
Le posizioni dei pixel nell'output vengono determinate usando questa formula:
C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0.5))
Dove:
-
C (x, y) è il pixel di output in (x, y).
C (x, y) è il pixel di input in corrispondenza di (x, y).
bitmap di spostamento (x, y) è l'intensità del pixel di spostamento alle coordinate specificate
XChannelSelector l'intensità del canale RGBA selezionato dalla bitmap di spostamento che sposta l'immagine di input nella direzione X.
YChannelSelector l'intensità del canale RGBA selezionato dalla bitmap di spostamento che sposta l'immagine di input nella direzione Y.
L'effetto ricampiona l'immagine di input in base alla proprietà di scala e all'intensità dell'immagine di spostamento. Usa l'interpolazione bilineare se il campionamento da un pixel all'altro nell'immagine di input.
Questo effetto funziona sulle immagini alfa dritte e premoltiplicate. Il formato alfa di output è uguale al formato di input.
Proprietà dell'effetto
Enumerazione del nome visualizzato e dell'indice | Tipo e valore predefinito | Descrizione |
---|---|---|
Scala D2D1_DISPLACEMENTMAP_PROP_SCALE |
GALLEGGIARE 0,0f |
Moltiplica l'intensità del canale selezionato dall'immagine di spostamento. Maggiore è l'impostazione di questa proprietà, più l'effetto sposta i pixel |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
L'effetto estrae l'intensità da questo canale di colore e lo usa per spostare l'immagine nello spazio nella direzione X. Per altre informazioni, vedi canali Color. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
L'effetto estrae l'intensità da questo canale di colore e lo usa per spostare l'immagine nello spazio nella direzione Y. Per altre informazioni, vedi canali Color. |
Canali colore
Enumerazione | Descrizione |
---|---|
D2D1_CHANNEL_SELECTOR_R | L'effetto estrae l'intensità dal canale rosso. |
D2D1_CHANNEL_SELECTOR_G | L'effetto estrae l'intensità dal canale verde. |
D2D1_CHANNEL_SELECTOR_B | L'effetto estrae l'intensità dal canale blu. |
D2D1_CHANNEL_SELECTOR_A | L'effetto estrae l'output dell'intensità dal canale alfa. |
Output Bitmap
È possibile determinare le dimensioni massime della bitmap di output con queste equazioni:
Bitmap di output? Pixel=(Dimensioni bitmap di input?( DIP)+Scale)*(USER DPI/96)
Bitmap di outputy Pixel=(Dimensioni bitmap di inputy(DIP) + Scala)*(DPI utente/96)
Fabbisogno
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |