0

你好我创建了一个旋转函数来旋转图形。

但是它会旋转容器对象中的所有内容(我的容器是 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);

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

4

1 回答 1

1

在绘制要应用变换的对象之前应用变换,然后重置变换:

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

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

于 2013-02-16T16:23:37.863 回答