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
- Proprietà dell'effetto
- Canali colore
- Output Bitmap
- Requisiti
- Argomenti correlati
Immagine di esempio
Prima |
---|
After |
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 corrispondenza di (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 tra pixel nell'immagine di input.
Questo effetto funziona sulle immagini alfa dritte e premoltiplicate. Il formato alfa di output corrisponde al formato di input.
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Tipo e valore predefinito | Descrizione |
---|---|---|
Scalabilità D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOAT 0,0f |
Moltiplica l'intensità del canale selezionato dall'immagine di spostamento. Più alto si imposta 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 colore . |
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 colore . |
Canali colore
Enumerazione | Descrizione |
---|---|
D2D1_CHANNEL_SELECTOR_R | L'effetto estrae l'output di intensità dal canale rosso. |
D2D1_CHANNEL_SELECTOR_G | L'effetto estrae l'output dell'intensità dal canale verde. |
D2D1_CHANNEL_SELECTOR_B | L'effetto estrae l'output di 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)+Scala)*(DPI utente/96)
Output Bitmapy Pixel=(Input Bitmap Sizey(DIPs) + Scale)*(User DPI/96)
Requisiti
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 |
Libreria | d2d1.lib, dxguid.lib |