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 de cet effet est CLSID_D2D13DTransform.
- Exemple d’image
- Propriétés de l’effet
- Classe Transform Matrix 4x4
- Configuration requise
- Rubriques connexes
Exemple d’image
Avant |
---|
After |
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 de l’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, 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. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Matrice de transformation 4x4 appliquée au plan de projection. Le calcul de matrice suivant est utilisé pour mapper des points d’un système de coordonnées 3D au système de coordonnées 2D transformé. Où:
Mx,y = Transformer les éléments de matrice X , Y , Z =Coordonnées du plan de projection de sortie Les éléments de matrice individuels ne sont pas limités et sont sans unité. Le type est D2D1_MATRIX_4X4_F. La valeur par défaut est Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1). |
Modes d’interpolation
Énumération | Description |
---|---|
D2D1_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Utilise un échantillon à 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 meilleure qualité. |
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 meilleure qualité. |
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 adapté à un scale-down de petites quantités sur des images de quelques pixels. |
D2D1_3DTRANSFORM_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 est D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR par défaut.
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 dans cet effet, les mipmaps ne sont pas générés à chaque fois pour des images suffisamment petites.
Modes de bordure
Name | Description |
---|---|
D2D1_BORDER_MODE_SOFT | L’effet tapisse l’image avec des pixels noirs transparents à mesure qu’elle interpole, ce qui donne un bord souple. |
D2D1_BORDER_MODE_HARD | L’effet restreint la sortie à la taille de l’image d’entrée. |
Classe Transform Matrix 4x4
Direct2D fournit une classe de matrice 4x4 pour fournir des fonctions d’assistance pour transformer l’image en 3 dimensions. Pour plus d’informations et une description de tous les membres de la classe, consultez la rubrique Matrix4x4F .
Fonction | Description | Matrice |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Génère une matrice de transformation qui met à l’échelle le plan de projection dans la direction X, Y et/ou Z. | |
SkewX(X) | Génère une matrice de transformation qui biaise le plan de projection dans la direction X. | |
SkewY(Y) | Génère une matrice de transformation qui biaise 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 autour de l’axe X. | |
RotationY(Y) | Génère une matrice de transformation qui fait pivoter le plan de projection autour de l’axe Y. | |
RotationZ(Z) | Génère une matrice de transformation qui fait pivoter le plan de projection autour de l’axe Z. | |
PerspectiveProjection(D) | Transformation de perspective avec une valeur de profondeur de D. | |
RotationArbitraryAxis(X, Y, Z, degrés) | Fait pivoter le plan de projection autour de l’axe que vous spécifiez. |
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 |