Sdílet prostřednictvím


Otočení objektu

Toto téma popisuje, jak otočit objekt o zadaný bod. Pokud chcete objekt otočit, zavolejte metodu Matrix3x2F::Rotation. Tato metoda přebírá dva parametry, zadaný úhel a středový bod. Úhel je úhel otočení po směru hodinových ručiček ve stupních a středovým bodem je bod, o kterém se objekt otočí. Středový bod je vyjádřen v souřadnicovém systému objektu, který je transformován.

Například následující kód otočí čtverec o 45 stupňů po směru hodinových ručiček kolem středu čtverce.

    // 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);

Následující obrázek znázorňuje dopad aplikace předchozí rotace na čtverec. Původní čtverec je tečkovaný obrys a otočený čtverec je plný obrys.

ilustrace čtverce otočeného po směru hodinových ručiček o 45 stupňů kolem středu původního čtverce

Následující obrázek znázorňuje efekt otáčení stejným úhlem o jiný středový bod. Všimněte si, že otočené objekty jsou v různých pozicích vzhledem k původnímu objektu. Levý obrysový čtverec je výsledkem otočení o střed původního čtverce a pravý obrysový čtverec je výsledkem otočení o levý horní roh původního čtverce.

ilustrace čtverce otočeného po směru hodinových ručiček o 45 stupňů kolem jiného středového bodu

Referenční Direct2D

Přehled Direct2D transformací