private Image rotateImage(Image b, double angle)
{
//create a new empty bitmap to hold rotated image
Bitmap returnBitmap = new Bitmap(2*b.Width, 2*b.Height);
//make a graphics object from the empty bitmap
Graphics g = Graphics.FromImage(returnBitmap);
//move rotation point to center of image
g.TranslateTransform(center_x, center_y);
//rotate
g.RotateTransform(-(float)(angle*180.0/Math.PI));
//move image back
g.TranslateTransform(-center_x, -center_y);
//draw passed in image onto graphics object
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}
Zu beachten ist, dass ich das Bild vergrößere (Faktor 2), da sonst das gedrehte Bild an manchen Kanten abgeschnitten sein kann. Zeichnet man dann das neue Bild und will die Mitte an den selben Punkt wie bei dem ungedrehten Bild setzen, so muss man natürlich den doppelten Offset benutzen.
Keine Kommentare:
Kommentar veröffentlichen