Condividi tramite


Interfaccia ID2D1TransformedGeometry (d2d1.h)

Rappresenta una geometria che è stata trasformata.

Ereditarietà

L'interfaccia ID2D1TransformedGeometry eredita da ID2D1Geometry. ID2D1TransformedGeometry include anche questi tipi di membri:

Metodi

L'interfaccia ID2D1TransformedGeometry include questi metodi.

 
ID2D1TransformedGeometry::GetSourceGeometry

Recupera la geometria di origine di questo oggetto geometry trasformato.
ID2D1TransformedGeometry::GetTransform

Recupera la matrice usata per trasformare la geometria di origine dell'oggetto ID2D1TransformedGeometry.

Commenti

L'uso di un ID2D1TransformedGeometry anziché trasformare una geometria usando una trasformazione della destinazione di rendering consente di trasformare una geometria senza trasformare il relativo tratto.

Creazione di oggetti ID2D1TransformedGeometry

Per creare un id2D1TransformedGeometry, chiamare il metodo ID2D1Factory::CreateTransformedGeometry .

Le geometrie Direct2D sono non modificabili e le risorse indipendenti dal dispositivo create da ID2D1Factory. In generale, è necessario creare geometrie una volta e conservarle per la vita dell'applicazione o fino a quando non devono essere modificate. Per altre informazioni sulle risorse dipendenti dal dispositivo e indipendenti dal dispositivo, vedere Panoramica delle risorse.

Esempio

L'esempio seguente crea un 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 successivo viene usata la destinazione di rendering per ridimensionare la geometria in base a un fattore 3, quindi la disegna. La figura seguente mostra il risultato del disegno del rettangolo senza la trasformazione e con la trasformazione; si noti che il tratto è più spesso dopo la trasformazione, anche se lo spessore del tratto è 1.

Figura 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 successivo viene usato il metodo CreateTransformedGeometry per ridimensionare la geometria in base a un fattore 3, quindi lo disegna. Produce l'output illustrato nella figura seguente. Si noti che, anche se il rettangolo è più grande, il suo 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

Vedi anche

ID2D1Geometry