0

我想这对于那些更频繁地使用 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都给了我白色的图像,这有某种意义。

4

1 回答 1

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;
}
于 2013-06-25T06:21:12.647 回答