DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ワールド変換による画像の回転と移動

環境/言語:[Windows 7, VB.NET, Visual Studio 2010]
分類:[.NET]

こんにちは、いつもお世話になります。

画像を縮小・回転するFunctionをつくっていますが、ちょっと予想をしていなかった問題に出くわしてしまいました。例えば、次のようなFunctionで正方形の画像を45度回転すると、画像の左下がX軸の0を左に超えて見えなくなって今います。

Public Function ScaleRotate(ByVal image As Bitmap, ByVal p As Single, ByVal r As Single) As System.Drawing.Bitmap
Dim DestImage As New Bitmap(image.Width, image.Height)
Using g As Graphics = Graphics.FromImage(DestImage)
g.RotateTransform(p)
g.ScaleTransform(r, r)
g.DrawImage(image, 0, 0)
End Using
Return DestImage
End Function

うまく画像が全て見えるように必要なだけ移動させることはできるでしょうか?よろしくお願いします。
どこを中心に回転させるか・・・と言うことになりますが
計算で求められるので、マイナスになる分、プラス方向にシフト(移動)
させてから回転させればよいだけでは?

以上。参考まで
■No30969に返信(たまたまさんの記事)

同じ大きさの折り紙を2枚用意して片方を他方に対し45度回転させた状態で
双方が互いにはみ出ないで納まる方法を考えてみてください。

DOBON.NET | プログラミング道 | プログラミング掲示板