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.
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.
// 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é.
// 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 |