私が欲しいのは、オブジェクトを動かして、その中心点に沿って回転させることです。変換にMatrixクラスを使用しました:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.ResetTransform();
Matrix transformationMatrix = new Matrix();
transformationMatrix.RotateAt(rot, new PointF(img.Size.Width / 2, img.Size.Height / 2));
e.Graphics.Transform = transformationMatrix;
e.Graphics.DrawImage(img, 0, 0, img.Size.Width, img.Size.Height);
}
上記のコードは、画像をその中心に沿って回転させます。
しかし、移動しようとすると(画像をpictureBoxの中央に配置しました)、画像はその中心点に沿って回転しなくなります。
e.Graphics.DrawImage(img, (pictureBox1.Width - img.Size.Width) / 2, (pictureBox1.Height - img.Size.Height) / 2, img.Size.Width, img.Size.Height);
位置を指定するには、Translate関数を使用する必要があると思いますが、その方法がわかりません。移動は相対的な位置を取ります。中心点を使用して画像の位置を指定し、中心に沿って回転できるようにしたい。
アップデート2:
変更されたコードは次のようになります
origin.X = 50;
origin.Y = 50;
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.TranslateTransform(origin.X, origin.Y);
e.Graphics.RotateTransform(rot);
e.Graphics.DrawImage(img, -img.Size.Width, -img.Size.Height/2, img.Size.Width, img.Size.Height);
}
そこで、画像の位置を指定するために点の原点を定義しました。しかし、それでも中心に沿って回転することはありません。