Partager via


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

Avant
image avant la transformation.
After
image après la transformation.
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é.
Matrice de profondeur 3D Où:
X, Y, Z = Coordonnées du plan de projection d’entrée
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. matrice scale3d
SkewX(X) Génère une matrice de transformation qui biaise le plan de projection dans la direction X. Affiche une matrice d’asymétrie dans la direction X.
SkewY(Y) Génère une matrice de transformation qui biaise le plan de projection dans la direction Y. Matrice d’asymétrie
Translation(X, Y, Z) Génère une matrice de transformation qui traduit le plan de projection dans la direction X, Y ou Z. traduire la matrice
RotationX(X) Génère une matrice de transformation qui fait pivoter le plan de projection autour de l’axe X. faire pivoter la matrice x
RotationY(Y) Génère une matrice de transformation qui fait pivoter le plan de projection autour de l’axe Y. faire pivoter la matrice y
RotationZ(Z) Génère une matrice de transformation qui fait pivoter le plan de projection autour de l’axe Z. faire pivoter la matrice z
PerspectiveProjection(D) Transformation de perspective avec une valeur de profondeur de D. matrice de perspective
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

ID2D1Effect