Come ruotare un oggetto

Questo argomento descrive come ruotare un oggetto su un punto specificato. Per ruotare un oggetto, chiamare il metodo Matrix3x2F::Rotation . Questo metodo accetta due parametri, l'angolo specificato e il punto centrale. L'angolo è un angolo di rotazione in senso orario in gradi e il punto centrale è il punto su cui ruota l'oggetto. Il punto centrale è espresso nel sistema di coordinate dell'oggetto trasformato.

Ad esempio, il codice seguente ruota un quadrato a 45 gradi circa il centro del quadrato.

    // Create a rectangle.
    D2D1_RECT_F rectangle = D2D1::Rect(438.0f, 301.5f, 498.0f, 361.5f);

    // Draw the rectangle.
    m_pRenderTarget->DrawRectangle(
        rectangle,
        m_pOriginalShapeBrush,
        1.0f,
        m_pStrokeStyleDash
        );

    // Apply the rotation transform to the render target.
    m_pRenderTarget->SetTransform(
        D2D1::Matrix3x2F::Rotation(
            45.0f,
            D2D1::Point2F(468.0f, 331.5f))
        );

    // Fill the rectangle.
    m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);

    // Draw the transformed rectangle.
    m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);

La figura seguente mostra l'effetto dell'applicazione della trasformazione di rotazione precedente al quadrato. Il quadrato originale è un contorno punteggiato e il quadrato ruotato è un contorno solido.

illustrazione di un quadrato ruotato in senso orario 45 gradi circa il centro del quadrato originale

La figura seguente mostra l'effetto della rotazione dello stesso angolo circa un punto centrale diverso. Si noti che gli oggetti ruotati si trovano in posizioni diverse rispetto all'originale. Il quadrato descritto a sinistra è il risultato della rotazione sul centro del quadrato originale e il quadrato descritto a destra è il risultato della rotazione sull'angolo superiore sinistro del quadrato originale.

figura di un quadrato ruotato a 45 gradi circa un punto centrale diverso

Riferimento a Direct2D

Panoramica delle trasformazioni Direct2D