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 de cet effet est CLSID_D2D1DisplacementMap.
- Exemple d’image
- Propriétés de l’effet
- Canaux de couleurs
- Bitmap de sortie
- Configuration requise
- Rubriques connexes
Exemple d’image
Avant |
---|
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();
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 RGBA 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 RGBA sélectionné à partir de la bitmap de déplacement qui déplace l’image d’entrée dans la direction Y.
L’effet rééchantillonne 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 bilinéaire si l’échantillonnage à partir de pixels dans l’image d’entrée.
Cet effet fonctionne sur les images alpha droites et prémultipliées. Le format alpha de sortie est identique au format d’entrée.
Propriétés de l’effet
Nom complet et énumération d’index | Type et valeur par défaut | Description |
---|---|---|
Scale D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOAT 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 couleurs et l’utilise pour déplacer spatialement l’image dans la direction X. Pour plus d’informations , consultez Canaux de couleurs. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
L’effet extrait l’intensité de ce canal de couleurs et l’utilise pour déplacer spatialement l’image dans la direction Y. Pour plus d’informations , consultez Canaux de couleurs. |
Canaux de couleurs
É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 les équations suivantes :
Bitmap de sortie ? Pixels=(Taille de bitmap d’entrée?( DIPs)+Mise à l’échelle)*(Ppp utilisateur/96)
Bitmapde sortie y Pixels=(Taille de bitmap d’entréey(DIPs) + Échelle)*(Ppp utilisateur/96)
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimal 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 |