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

正常に動作しますが、私の質問は次のとおりです。コンテナ内で1つの長方形またはその他のものだけを回転させるにはどうすればよいですか。

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

この方法では、回転は 2 番目の描画コマンド (赤い四角形) にのみ適用されます。

于 2013-02-16T16:23:37.863 に答える