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

Trasforma la geometria specificata e archivia il risultato come oggetto ID2D1TransformedGeometry .

Sintassi

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

Parametri

sourceGeometry

Tipo: [in] ID2D1Geometry*

Geometria da trasformare.

transform

Tipo: [in] const D2D1_MATRIX_3X2_F &

Trasformazione da applicare.

transformedGeometry

Tipo: [out] ID2D1TransformedGeometry**

Quando termina, questo metodo contiene l'indirizzo del puntatore al nuovo oggetto geometry trasformato. La geometria trasformata archivia il risultato della trasformazione sourceGeometry per trasformazione.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Analogamente ad altre risorse, una geometria trasformata eredita lo spazio delle risorse e i criteri di threading della factory che lo hanno creato. Questo oggetto non è modificabile.

Quando si crea una geometria trasformata con il metodo DrawGeometry , la larghezza del tratto non viene influenzata dalla trasformazione applicata alla geometria. La larghezza del tratto è influenzata solo dalla trasformazione globale.

Esempio

L'esempio seguente crea un oggetto ID2D1RectangleGeometry, quindi lo disegna senza trasformarlo. Produce l'output illustrato nella figura seguente.

Illustrazione di un rettangolo
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

Nell'esempio seguente viene utilizzata la destinazione di rendering per ridimensionare la geometria in base a un fattore pari a 3, quindi la disegna. La figura seguente mostra il risultato del disegno del rettangolo senza la trasformazione e con la trasformazione; nota che il tratto è più spesso dopo la trasformazione, anche se lo spessore del tratto è 1.

Illustrazione di un rettangolo più piccolo all'interno di un rettangolo più grande con un tratto più spesso
// 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);

Nell'esempio seguente viene utilizzato il metodo CreateTransformedGeometry per ridimensionare la geometria in base a un fattore pari a 3, quindi disegnarla. Produce l'output illustrato nella figura seguente. Si noti che, anche se il rettangolo è più grande, il tratto non è aumentato.

Illustrazione di un rettangolo più piccolo all'interno di un rettangolo più grande con lo stesso tratto
 // 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);

Requisiti

Requisito Valore
Client minimo supportato Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione d2d1.h
Libreria D2d1.lib
DLL D2d1.dll

Vedi anche

ID2D1Factory

ID2D1TransformedGeometry