ID2D1Factory::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**)-Methode (d2d1.h)

Transformiert die angegebene Geometrie und speichert das Ergebnis als ID2D1TransformedGeometry-Objekt .

Syntax

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

Parameter

sourceGeometry

Typ: [in] ID2D1Geometry*

Die zu transformierenden Geometrien.

transform

Typ: [in] const D2D1_MATRIX_3X2_F*

Die anzuwendende Transformation.

transformedGeometry

Typ: [out] ID2D1TransformedGeometry**

Wenn diese Methode zurückgibt, enthält die Adresse des Zeigers auf das neue transformierte Geometrieobjekt. Die transformierte Geometrie speichert das Ergebnis der Transformation von sourceGeometry by transformation.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Hinweise

Wie andere Ressourcen erbt eine transformierte Geometrie den Ressourcenraum und die Threadingrichtlinie der Factory, von der sie erstellt wurde. Dieses Objekt ist unveränderlich.

Beim Streichen einer transformierten Geometrie mit der DrawGeometry-Methode wird die Strichbreite nicht von der Transformation beeinflusst, die auf die Geometrie angewendet wird. Die Strichbreite wird nur durch die Welttransformation beeinflusst.

Beispiele

Im folgenden Beispiel wird eine ID2D1RectangleGeometry erstellt und dann ohne Transformation gezeichnet. Es erzeugt die in der folgenden Abbildung dargestellte Ausgabe.

Abbildung eines Rechtecks
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

Im nächsten Beispiel wird das Renderziel verwendet, um die Geometrie um den Faktor 3 zu skalieren und dann zu zeichnet. Die folgende Abbildung zeigt das Ergebnis des Zeichnens des Rechtecks ohne die Transformation und mit der Transformation. stellt fest, dass der Strich nach der Transformation dicker ist, obwohl die Strichstärke 1 ist.

Abbildung eines kleineren Rechtecks in einem größeren Rechteck mit einem dickeren Strich
// 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);

Im nächsten Beispiel wird die CreateTransformedGeometry-Methode verwendet, um die Geometrie um den Faktor 3 zu skalieren und dann zu zeichnet. Es erzeugt die in der folgenden Abbildung dargestellte Ausgabe. Beachten Sie, dass das Rechteck zwar größer ist, sein Strich jedoch nicht erhöht wurde.

Abbildung eines kleineren Rechtecks in einem größeren Rechteck mit derselben Strich
 // 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);

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d2d1.h
Bibliothek D2d1.lib
DLL D2d1.dll

Weitere Informationen

ID2D1Factory

ID2D1TransformedGeometry