我猜这个对于那些更频繁使用GDI的人来说相当简单。我有一个想要旋转的图像。
示例图片:
在我应用轮换后,它看起来如下所示:
以下是使用的代码:
public Bitmap RotateBitmap(Bitmap bitmap, float angle)
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);
graphics.RotateTransform(angle);
graphics.TranslateTransform(-(float)bitmap.Width / 2, -(float)bitmap.Height / 2);
graphics.DrawImage(bitmap, new Point(0, 0));
}
return bitmap;
}
我想摆脱的是旋转前剩下的图像部分。在致电DrawRectangle
之前尝试使用Clear
和DrawImage
的任何尝试都会给我一些白色图像,这有点儿意义。
答案 0 :(得分:1)
尝试以下方法:
public Bitmap RotateBitmap(Image bitmap, float angle) {
Bitmap result = new Bitmap(bitmap.Width, bitmap.Height, bitmap.PixelFormat);
using(Graphics graphics = Graphics.FromImage(result)) {
graphics.TranslateTransform((float)bitmap.Width / 2f, (float)bitmap.Height / 2f);
graphics.RotateTransform(angle);
graphics.TranslateTransform(-(float)bitmap.Width / 2f, -(float)bitmap.Height / 2f);
graphics.DrawImage(bitmap, Point.Empty);
}
return result;
}