我正在尝试在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;
}
答案 0 :(得分:1)
考虑保留原始图像,每次旋转时,通过将累积旋转应用于原始图像来计算新图像。
您所看到的是旋转的不可避免的后果,只有在必须使用的有限像素数的情况下才能逼近原始图像。您已经看到了近似值的近似值,并且每次旋转时它们都会变得更糟。