Как наклонить объект
Наклон (или сдвига) объекта означает искажение объекта на указанный угол от оси X, оси Y или обоих. Например, при наклоне квадрата получается параллелограмм.
Метод Matrix3x2F::Skew принимает 3 параметра:
- angleX: угол наклона по оси X, который измеряется в градусах против часовой стрелки от оси Y.
- angleY: угол наклона оси Y, который измеряется в градусах по часовой стрелке от оси X.
- centerPoint: точка, относительно которой выполняется отклонение.
Чтобы спрогнозировать эффект преобразования неравномерного распределения, учтите, что angleX — это угол отклонения, измеряемый в градусах против часовой стрелки от оси Y. Например, если для angleX задано значение 30, объект наклоняется на 30 градусов против часовой стрелки вдоль оси Y относительно центральной точки. На следующем рисунке показан квадрат, отклоненный горизонтально на 30 градусов относительно левого верхнего угла квадрата.
Аналогично, angleY — это угол отклонения, измеряемый в градусах по часовой стрелке от оси X. Например, если для параметра angleY задано значение 30, объект наклоняется на 30 градусов по часовой стрелке вдоль оси X относительно центральной точки. На следующем рисунке показан квадрат, расположенный вертикально на 30 градусов относительно левого верхнего угла квадрата.
Если для параметра angleX и angleY задано значение 30 градусов, а центральная точка — в верхнем левом углу квадрата, вы увидите следующий квадрат с наклоном (сплошной контур). Обратите внимание, что квадрат с наклоном наклонен на 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.
Связанные темы