Effet de carte de déplacement
Utilisez l’effet de carte de déplacement pour déplacer les pixels de l’image d’entrée par les valeurs d’intensité d’une deuxième image d’entrée.
Le CLSID pour cet effet est CLSID_D2D1DisplacementMap.
- Exemple d’image
- propriétés Effect
- canaux Color
- bitmap de sortie
- Configuration requise
- rubriques connexes
Exemple d’image
Avant |
---|
![]() |
Après |
![]() |
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();
Les emplacements des pixels dans la sortie sont déterminés à l’aide de cette formule :
C'(x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0.5))
Où:
-
C (x, y) est le pixel de sortie à (x, y).
C (x, y) est le pixel d’entrée à (x, y).
bitmap de déplacement (x, y) est l’intensité du pixel de déplacement aux coordonnées spécifiées
XChannelSelector l’intensité du canal RVBA sélectionné à partir de la bitmap de déplacement qui déplace l’image d’entrée dans la direction X.
YChannelSelector l’intensité du canal RVBA sélectionné à partir de la bitmap de déplacement qui déplace l’image d’entrée dans la direction Y.
L’effet rééchantille l’image d’entrée en fonction de la propriété d’échelle et de l’intensité de l’image de déplacement. Il utilise l’interpolation biligne si l’échantillonnage entre les pixels de l’image d’entrée est effectué.
Cet effet fonctionne sur des images alpha droites et prémultipliées. Le format alpha de sortie est identique au format d’entrée.
Propriétés d’effet
Nom complet et énumération d’index | Type et valeur par défaut | Description |
---|---|---|
Écaille D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOTTER 0.0f |
Multiplie l’intensité du canal sélectionné à partir de l’image de déplacement. Plus vous définissez cette propriété, plus l’effet déplace les pixels |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
L’effet extrait l’intensité de ce canal de couleur et l’utilise pour déplacer spatialement l’image dans la direction X. Pour plus d’informations, consultez canaux Color. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
L’effet extrait l’intensité de ce canal de couleur et l’utilise pour déplacer spatialement l’image dans la direction Y. Pour plus d’informations, consultez canaux Color. |
Canaux de couleur
Énumération | Description |
---|---|
D2D1_CHANNEL_SELECTOR_R | L’effet extrait la sortie d’intensité du canal rouge. |
D2D1_CHANNEL_SELECTOR_G | L’effet extrait la sortie d’intensité du canal vert. |
D2D1_CHANNEL_SELECTOR_B | L’effet extrait la sortie d’intensité du canal bleu. |
D2D1_CHANNEL_SELECTOR_A | L’effet extrait la sortie d’intensité du canal alpha. |
Bitmap de sortie
Vous pouvez déterminer la taille maximale de la bitmap de sortie avec ces équations :
Bitmap de sortie ? Pixels=(Taille de bitmap d’entrée ?( DIPs)+Scale)*(User DPI/96)
Sortie bitmapy Pixels=(Taille de bitmap d’entréey(DIPs) + Échelle)*(PPP utilisateur/96)
Exigences
Exigence | Valeur |
---|---|
Client minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |