Udostępnij za pośrednictwem


Jak obrócić obiekt

W tym temacie opisano sposób obracania obiektu o określonym punkcie. Aby obrócić obiekt, wywołaj metodę Matrix3x2F::Rotation. Ta metoda przyjmuje dwa parametry, określony kąt i punkt środkowy. Kąt jest kątem obrotu zgodnie z ruchem wskazówek zegara w stopniach, a punkt środkowy jest punktem, o którym obraca się obiekt. Punkt środkowy jest wyrażony w układzie współrzędnych obiektu, który jest przekształcany.

Na przykład, poniższy kod obraca kwadrat zgodnie z ruchem wskazówek zegara o 45 stopni wokół środka kwadratu.

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

Ilustracja poniżej pokazuje efekt zastosowania transformacji obrotu na kwadracie. Oryginalny kwadrat jest konturem kropkowanym, a obrócony kwadrat jest stałym konturem.

ilustracja kwadratu obróconego o 45 stopni zgodnie z ruchem wskazówek zegara wokół środka oryginalnego kwadratu

Na poniższej ilustracji przedstawiono efekt rotacji o ten sam kąt wokół innego punktu środkowego. Zwróć uwagę, że obrócone obiekty znajdują się w różnych pozycjach względem oryginału. Obrysowany kwadrat po lewej jest wynikiem rotacji wokół środka oryginalnego kwadratu, a obrysowany kwadrat po prawej jest wynikiem rotacji wokół lewego górnego rogu oryginalnego kwadratu.

ilustracja kwadratu obracanego zgodnie z 45 stopniami zegara o innym punkcie środkowym

Direct2D Referencja

Przegląd przekształceń Direct2D