如何倾斜对象
倾斜 (或剪切) 对象意味着从 x 轴和/或 y 轴按指定角度扭曲对象。 例如,当你倾斜正方形时,它将成为一个平行四边形。
Matrix3x2F::Skew 方法采用 3 个参数:
- angleX:x 轴倾斜角度,从 y 轴逆时针以度为单位。
- angleY:y 轴倾斜角度,从 x 轴顺时针以度为单位。
- centerPoint:执行倾斜的点。
若要预测倾斜转换的效果,请考虑 angleX 是从 y 轴逆时针以度为单位测量的倾斜角度。 例如,如果 angleX 设置为 30,则对象沿 centerPoint 的 y 轴逆时针倾斜 30 度。 下图显示正方形左上角的正方形水平倾斜 30 度。
同样, angleY 是从 x 轴顺时针以度为单位的倾斜角度。 例如,如果 angleY 设置为 30,则对象沿 centerPoint 的 x 轴顺时针倾斜 30 度。 下图显示了正方形左上角的正方形垂直倾斜 30 度。
如果将 angleX 和 angleY 都设置为 30 度,并将 centerPoint 设置为正方形的左上角,您将看到以下倾斜的正方形 (实心轮廓) 。 请注意,倾斜的正方形从 y 轴逆时针倾斜 30 度,从 x 轴顺时针倾斜 30 度。
下面的代码示例将正方形水平倾斜到正方形的左上角 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);
下图显示了将倾斜转换应用于正方形的效果,其中原始正方形是虚线轮廓, (平行四边形) 的倾斜对象是实心轮廓。 请注意,倾斜角度与 y 轴逆时针方向为 45 度。
相关主题