Effet de transformation de perspective 3D
Utilisez l’effet de transformation de perspective 3D pour faire pivoter l’image en 3 dimensions comme si elle était vue à distance.
La transformation de perspective 3D est plus pratique que l’effet de transformation 3D, mais expose uniquement un sous-ensemble de la fonctionnalité. Vous pouvez calculer une matrice de transformation 3D complète et appliquer une matrice de transformation plus arbitraire à une image à l’aide de l’effet de transformation 3D .
Le CLSID de cet effet est CLSID_D2D13DPerspectiveTransform.
- Exemple d’image
- Propriétés d’effet
- Modes d’interpolation
- Modes de bordure
- Bitmap de sortie
- Configuration requise
- Rubriques connexes
Exemple d’image
Avant |
---|
After |
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);
perspectiveTransformEffect->SetInput(0, bitmap);
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();
Propriétés d’effet
Nom d’affichage et énumération d’index | Description |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE |
Mode d’interpolation utilisé par l’effet sur l’image. Il existe 5 modes de mise à l’échelle qui varient en qualité et en vitesse. Le type est D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. La valeur par défaut est D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE |
Mode utilisé pour calculer la bordure de l’image, soft ou hard. Pour plus d’informations, consultez Modes de bordure . Le type est D2D1_BORDER_MODE. La valeur par défaut est D2D1_BORDER_MODE_SOFT. |
Profondeur D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Distance entre PerspectiveOrigin et le plan de projection. Valeur spécifiée dans les DIPs et doit être supérieure à 0. Le type est FLOAT. La valeur par défaut est 1000.0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Emplacement X et Y de la visionneuse dans la scène 3D. Cette propriété est une D2D1_VECTOR_2F définie comme suit : (point X, point Y). Les unités sont en DIPs. Vous définissez la valeur Z avec la propriété Depth . Le type est D2D1_VECTOR_2F. La valeur par défaut est {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Traduction que l’effet effectue avant de faire pivoter le plan de projection. Cette propriété est une D2D1_VECTOR_3F définie comme suit : (X, Y, Z). Les unités sont en DIPs. Le type est D2D1_VECTOR_3F. La valeur par défaut est {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Traduction effectuée par l’effet après avoir fait pivoter le plan de projection. Cette propriété est une D2D1_VECTOR_3F définie comme suit : (X, Y, Z). Les unités sont en DIPs. Le type est D2D1_VECTOR_3F. La valeur par défaut est {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
Point central de la rotation effectuée par l’effet. Cette propriété est une D2D1_VECTOR_3F définie comme suit : (X, Y, Z). Les unités sont en DIPs. Le type est D2D1_VECTOR_3F. La valeur par défaut est {0.0f, 0.0f, 0.0f}. |
Rotation D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Angles de rotation de chaque axe. Cette propriété est une D2D1_VECTOR_3F définie comme suit : (X, Y, Z). Les unités sont en degrés. Le type est D2D1_VECTOR_3F. La valeur par défaut est {0.0f, 0.0f, 0.0f}. |
Modes d’interpolation
Énumération | Description |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Échantillonne le point unique le plus proche et l’utilise. Ce mode utilise moins de temps de traitement, mais génère l’image de qualité la plus faible. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR | Utilise un exemple à quatre points et une interpolation linéaire. Ce mode utilise plus de temps de traitement que le mode voisin le plus proche, mais génère une image de qualité supérieure. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC | Utilise un exemple de noyau cubique de 16 pour l’interpolation. Ce mode utilise le plus de temps de traitement, mais génère une image de meilleure qualité. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Utilise 4 exemples linéaires au sein d’un seul pixel pour une bonne anti-aliasing de bord. Ce mode est adapté à la mise à l’échelle de petites quantités sur des images de quelques pixels. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Utilise le filtrage anisotrope pour échantillonner un modèle en fonction de la forme transformée de la bitmap. |
Notes
Si vous ne sélectionnez pas de mode, l’effet par défaut est D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
Notes
Le mode anisotrope génère des mipmaps lors de la mise à l’échelle. Toutefois, si vous définissez la propriété Mise en cache sur true sur les effets qui sont entrés pour cet effet, les mipmaps ne seront pas générés à chaque fois pour des images suffisamment petites.
Modes de bordure
Nom | Description |
---|---|
D2D1_BORDER_MODE_SOFT | L’effet place l’image avec des pixels noirs transparents au fur et à mesure qu’elle interpole, ce qui entraîne un bord souple. |
D2D1_BORDER_MODE_HARD | L’effet attache la sortie à la taille de l’image d’entrée. |
Bitmap de sortie
La taille de l’image bitmap de sortie dépend de la matrice de transformation appliquée à l’image.
L’effet effectue l’opération de transformation, puis applique un cadre englobant autour du résultat. L’image bitmap de sortie correspond à la taille du cadre englobant.
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 |