图像旋转与白色背景

时间:2013-06-25 06:11:39

标签: c# gdi+ image-rotation

我猜这个对于那些更频繁使用GDI的人来说相当简单。我有一个想要旋转的图像。

示例图片:

before rotation

在我应用轮换后,它看起来如下所示:

enter image description here

以下是使用的代码:

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之前尝试使用ClearDrawImage的任何尝试都会给我一些白色图像,这有点儿意义。

1 个答案:

答案 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;
}