Effet de transformation 3D
Utilisez l’effet de transformation 3D pour appliquer une matrice de transformation 4x4 arbitraire à une image.
Cet effet applique la matrice (M ?) que vous fournissez aux sommets d’angle de l’image source ([ x y z 1 ]) à l’aide de ce calcul :
[ xr yr zr 1 ]=[ x y z 1 ]*M ?
Le CLSID pour cet effet est CLSID_D2D13DTransform.
- Exemple d’image
- propriétés Effect
- classe de matrice de transformation 4x4
- Configuration requise
- rubriques connexes
Exemple d’image
Avant |
---|
![]() |
Après |
![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Propriétés d’effet
Nom complet et énumération d’index | Description |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Mode d’interpolation utilisé par l’effet sur l’image. Il existe 5 modes d’échelle qui varient en qualité et en vitesse. Le type est D2D1_3DTRANSFORM_INTERPOLATION_MODE. La valeur par défaut est D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Mode utilisé pour calculer la bordure de l’image, douce ou dure. Pour plus d’informations, consultez modes bordure. Le type est D2D1_BORDER_MODE. La valeur par défaut est D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Matrice de transformation 4x4 appliquée au plan de projection. Le calcul de matrice suivant permet de mapper des points d’un système de coordonnées 3D au système de coordonnées 2D transformé. ![]()
Mx,y = Éléments de matrice de transformation X, Y , Z =Coordonnées du plan de projection de sortie Les éléments de matrice individuels ne sont pas limités et ne sont pas unitaires. Le type est D2D1_MATRIX_4X4_F. La valeur par défaut est Matrix4x4F(1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1). |
Modes d’interpolation
Énumération | Description |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Échantillonne le point unique le plus proche et utilise cela. Ce mode utilise moins de temps de traitement, mais génère l’image de qualité la plus faible. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Utilise un exemple de 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_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | Utilise un noyau cube de 16 exemples pour l’interpolation. Ce mode utilise le temps de traitement le plus élevé, mais génère une image de qualité supérieure. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Utilise 4 exemples linéaires au sein d’un seul pixel pour une bonne anticrénelage de bord. Ce mode est utile pour effectuer un scale-down de petites quantités sur des images avec quelques pixels. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Utilise le filtrage anisotropique pour échantillonner un modèle en fonction de la forme transformée de la bitmap. |
Note
Si vous ne sélectionnez pas de mode, l’effet par défaut est D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
Note
Le mode anisotropique 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 dans 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 fait glisser l’image avec des pixels noirs transparents pendant qu’elle interpole, ce qui entraîne un bord doux. |
D2D1_BORDER_MODE_HARD | L’effet bloque la sortie à la taille de l’image d’entrée. |
Classe de matrice de transformation 4x4
Direct2D fournit une classe de matrice 4x4 pour fournir des fonctions d’assistance pour transformer l’image en 3 dimensions. Consultez la rubrique Matrix4x4F pour plus d’informations et une description de tous les membres de classe.
Fonction | Description | Matrice |
---|---|---|
Matrix4x4F ::Scale(X, Y, Z) | Génère une matrice de transformation qui met à l’échelle le plan de projection dans le sens X, Y et/ou Z. |
![]() |
SkewX(X) | Génère une matrice de transformation qui asymétrie le plan de projection dans la direction X. |
![]() |
SkewY(Y) | Génère une matrice de transformation qui assymétrie le plan de projection dans la direction Y. |
![]() |
Translation(X, Y, Z) | Génère une matrice de transformation qui traduit le plan de projection dans la direction X, Y ou Z. |
![]() |
RotationX(X) | Génère une matrice de transformation qui fait pivoter le plan de projection sur l’axe X. |
![]() |
RotationY(Y) | Génère une matrice de transformation qui fait pivoter le plan de projection sur l’axe Y. |
![]() |
RotationZ(Z) | Génère une matrice de transformation qui fait pivoter le plan de projection sur l’axe Z. |
![]() |
PerspectiveProjection(D) | Transformation de perspective avec une valeur de profondeur de D. | matrice de perspective ![]() |
RotationArbitraryAxis(X, Y, Z, degrees) | Fait pivoter le plan de projection sur l’axe que vous spécifiez. |
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 |