Compartilhar via


Como girar um objeto

Este tópico descreve como girar um objeto sobre um ponto especificado. Para girar um objeto, chame o método Matrix3x2F::Rotation . Esse método usa dois parâmetros, o ângulo especificado e o ponto central. O ângulo é um ângulo de rotação no sentido horário em graus e o ponto central é o ponto sobre o qual o objeto gira. O ponto central é expresso no sistema de coordenadas do objeto que é transformado.

Por exemplo, o código a seguir gira um quadrado no sentido horário 45 graus sobre o centro do quadrado.

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

A ilustração a seguir mostra o efeito da aplicação da transformação de rotação anterior ao quadrado. O quadrado original é um contorno pontilhado, e o quadrado girado é um contorno sólido.

ilustração de um quadrado girado no sentido horário 45 graus sobre o centro do quadrado original

A ilustração a seguir mostra o efeito de girar pelo mesmo ângulo sobre um ponto central diferente. Observe que os objetos girados estão em posições diferentes em relação ao original. O quadrado delineado à esquerda é o resultado da rotação sobre o centro do quadrado original, e o quadrado delineado à direita é o resultado da rotação sobre o canto superior esquerdo do quadrado original.

ilustração de um quadrado girado no sentido horário 45 graus sobre um ponto central diferente

Referência de Direct2D

Visão geral das transformações de Direct2D