Поделиться через


Поворот объекта

В этом разделе описывается, как повернуть объект относительно указанной точки. Чтобы повернуть объект, вызовите метод Matrix3x2F::Rotation . Этот метод принимает два параметра: указанный угол и центральную точку. Угол — это угол поворота по часовой стрелке в градусах, а центральная точка — это точка, вокруг которой вращается объект. Центральная точка выражается в системе координат преобразуемого объекта.

Например, следующий код поворачивает квадрат по часовой стрелке на 45 градусов относительно центра квадрата.

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

На следующем рисунке показан эффект применения предыдущего преобразования поворота к квадрату. Исходный квадрат представляет собой пунктирный контур, а повернутый квадрат — сплошной контур.

иллюстрация квадрата, повернутого по часовой стрелке на 45 градусов о центре исходного квадрата

На следующем рисунке показан эффект поворота на один и тот же угол относительно другой центральной точки. Обратите внимание, что повернутые объекты находятся в разных положениях относительно исходного объекта. Левый контурный квадрат является результатом поворота вокруг центра исходного квадрата, а правый контур квадрата является результатом поворота вокруг левого верхнего угла исходного квадрата.

иллюстрация квадрата, повернутого по часовой стрелке на 45 градусов вокруг другой центральной точки

Справочник по Direct2D

Общие сведения о преобразованиях Direct2D