旋转时PictureBox中的图像变得模糊

时间:2015-05-28 15:03:58

标签: c# winforms

我正在尝试在C#WinForm中旋转PictureBox一侧的图像。我用timer1的每个刻度旋转图像(间隔= 100)。然而,当我旋转时,图像变得模糊和模糊。我不确定是否有办法解决这个问题。我已经启用了表格双重缓冲。

以下是我正在使用的代码:

public static Image RotateImage(Image img, float rotationAngle)
{
    Bitmap bmp = new Bitmap(img.Width, img.Height);
    bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution);

    Graphics gfx = Graphics.FromImage(bmp);

    gfx.TranslateTransform((float)bmp.Width / 2, (float)bmp.Height / 2);

    gfx.RotateTransform(-rotationAngle);
    gfx.TranslateTransform(-(float)bmp.Width / 2, -(float)bmp.Height / 2);

    gfx.DrawImage(img, new Point(0, 0));

    gfx.Dispose();

    return bmp;

}

private void timer1_Tick(object sender, EventArgs e)
{
    Image bmp = Form1.RotateImage(pictureBox1.Image, 10);

    pictureBox1.Image = bmp;
}

1 个答案:

答案 0 :(得分:1)

考虑保留原始图像,每次旋转时,通过将累积旋转应用于原始图像来计算新图像。

您所看到的是旋转的不可避免的后果,只有在必须使用的有限像素数的情况下才能逼近原始图像。您已经看到了近似值的近似值,并且每次旋转时它们都会变得更糟。