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


Как наклонить объект

Наклон (или сдвига) объекта означает искажение объекта на указанный угол от оси X, оси Y или обоих. Например, при наклоне квадрата получается параллелограмм.

Метод Matrix3x2F::Skew принимает 3 параметра:

  • angleX: угол наклона по оси X, который измеряется в градусах против часовой стрелки от оси Y.
  • angleY: угол наклона оси Y, который измеряется в градусах по часовой стрелке от оси X.
  • centerPoint: точка, относительно которой выполняется отклонение.

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

Иллюстрация квадратного наклона на 30 градусов против часовой стрелки от оси Y

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

Изображение квадрата, отклоненного на 30 градусов по часовой стрелке от оси X

Если для параметра angleX и angleY задано значение 30 градусов, а центральная точка — в верхнем левом углу квадрата, вы увидите следующий квадрат с наклоном (сплошной контур). Обратите внимание, что квадрат с наклоном наклонен на 30 градусов против часовой стрелки от оси Y и на 30 градусов по часовой стрелке от оси X.

Иллюстрация квадратного наклона на 30 градусов против часовой стрелки от оси Y и 30 градусов по часовой стрелке от оси X

В следующем примере кода квадрат на 45 градусов наклоняется горизонтально относительно левого верхнего угла квадрата.

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

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

    // Apply the skew transform to the render target.
    m_pRenderTarget->SetTransform(
        D2D1::Matrix3x2F::Skew(
            45.0f,
            0.0f,
            D2D1::Point2F(126.0f, 301.5f))
        );

    // Paint the interior of the rectangle.
    m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);

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

На следующем рисунке показан эффект применения преобразования неравномерного распределения к квадрату, где исходный квадрат представляет собой пунктирную структуру, а объект с отклонением (параллелограмм) — сплошной контур. Обратите внимание, что угол наклона составляет 45 градусов против часовой стрелки от оси Y.

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

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

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