如何在容器中旋转单个对象?

时间:2013-02-16 16:13:48

标签: c# winforms rotation

您好我创建了一个旋转功能来旋转图形。

然而,它会旋转容器对象中的所有内容(我的容器是PictureBox)。

这是我的轮换功能:

public void RotateGraphics(PaintEventArgs e, float angle, PointF loc)
{
    e.Graphics.TranslateTransform(loc.X, loc.Y);
    e.Graphics.RotateTransform(angle);
}
public void SetOrigin(PaintEventArgs e, float objWidth, float objHeight)
{
    e.Graphics.TranslateTransform(-(objWidth / 2.0f), -(objHeight / 2.0f));
}

这是我绘制对象的方式:

e.Graphics.FillRectangle(new SolidBrush(Color.Red), recP2.X, recP2.Y, elWidth, elHeight);

它工作正常但我的问题是:如何只旋转一个矩形或容器内的任何东西?

1 个答案:

答案 0 :(得分:1)

应用转换beofore绘制要应用transfomration的对象,然后重置转换:

    e.Graphics.DrawRectangle(Pens.Blue, 10, 10, 20, 20);
    e.Graphics.RotateTransform(20);
    e.Graphics.DrawRectangle(Pens.Red, 10, 30, 20, 20);
    e.Graphics.ResetTransform();

这样,旋转仅适用于第二个绘图命令(红色矩形)。