Partager via


ID2D1Factory ::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F&,ID2D1TransformedGeometry**) method (d2d1.h)

Transforme la géométrie spécifiée et stocke le résultat sous la forme d’un objet ID2D1TransformedGeometry .

Syntaxe

HRESULT CreateTransformedGeometry(
  ID2D1Geometry             *sourceGeometry,
  const D2D1_MATRIX_3X2_F & transform,
  ID2D1TransformedGeometry  **transformedGeometry
);

Paramètres

sourceGeometry

Type : [in] ID2D1Geometry*

Géométrie à transformer.

transform

Type : [in] const D2D1_MATRIX_3X2_F &

Transformation à appliquer.

transformedGeometry

Type : [out] ID2D1TransformedGeometry**

Lorsque cette méthode est retournée, contient l’adresse du pointeur vers le nouvel objet geometry transformé. La géométrie transformée stocke le résultat de la transformation de sourceGeometry par transformation.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT .

Remarques

Comme d’autres ressources, une géométrie transformée hérite de l’espace de ressources et de la stratégie de thread de la fabrique qui l’a créée. Cet objet est immuable.

Lorsque vous caressez une géométrie transformée avec la méthode DrawGeometry , la largeur du trait n’est pas affectée par la transformation appliquée à la géométrie. La largeur du trait est affectée uniquement par la transformation du monde.

Exemples

L’exemple suivant crée un ID2D1RectangleGeometry, puis le dessine sans le transformer. Elle produit la sortie illustrée dans l’illustration suivante.

Illustration d’un rectangle
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

L’exemple suivant utilise la cible de rendu pour mettre à l’échelle la géométrie d’un facteur de 3, puis la dessine. L’illustration suivante montre le résultat du dessin du rectangle sans la transformation et avec la transformation ; remarque que le trait est plus épais après la transformation, même si l’épaisseur du trait est de 1.

Illustration d’un rectangle plus petit à l’intérieur d’un rectangle plus grand avec un trait plus épais
// Transform the render target, then draw the rectangle geometry again.
m_pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Scale(
        D2D1::SizeF(3.f, 3.f),
        D2D1::Point2F(175.f, 175.f))
    );

m_pRenderTarget->DrawGeometry(m_pRectangleGeometry, m_pBlackBrush, 1);

L’exemple suivant utilise la méthode CreateTransformedGeometry pour mettre à l’échelle la géométrie d’un facteur 3, puis la dessine. Elle produit la sortie illustrée dans l’illustration suivante. Notez que, bien que le rectangle soit plus grand, son trait n’a pas augmenté.

Illustration d’un rectangle plus petit à l’intérieur d’un rectangle plus grand avec le même trait
 // Create a geometry that is a scaled version
 // of m_pRectangleGeometry.
 // The new geometry is scaled by a factory of 3
 // from the center of the geometry, (35, 35).

 hr = m_pD2DFactory->CreateTransformedGeometry(
     m_pRectangleGeometry,
     D2D1::Matrix3x2F::Scale(
         D2D1::SizeF(3.f, 3.f),
         D2D1::Point2F(175.f, 175.f)),
     &m_pTransformedGeometry
     );
// Replace the previous render target transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

// Draw the transformed geometry.
m_pRenderTarget->DrawGeometry(m_pTransformedGeometry, m_pBlackBrush, 1);

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Platform Update pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d2d1.h
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

ID2D1Factory

ID2D1TransformedGeometry