我有一个游戏,我需要一个轮子来旋转,但是我希望能够在我希望它停止的时候进行设置那部分。
到目前为止,我发现了一个 rotateimage 函数,并使用计时器(更改间隔)来减慢它的速度。我要问的是在winforms中是否有更好的方法来做到这一点,因为我必须让它更快地旋转几次然后减速然后停止。
我发现这方面的帮助是许多不同的语言,但不是 C# win 形式。我想知道这是否可能。
private void timer1_Tick(object sender, EventArgs e)
{
image = new Bitmap(@"C:\wheel.png");
Wheel1.Image = (Bitmap)image.Clone();
wheelspeed1 = wheelspeed1 + 5;
angle = wheelspeed1;
RotateImage(Wheel1, image, angle);
Wheel1.Refresh();
if (timer1.Interval < 150)
{
timer1.Interval++;
}
else
timer1.Enabled = false;
}
public static Bitmap RotateImage(Image image, float angle)
{
return RotateImage(image, new PointF((float)image.Width / 2, (float)image.Height / 2), angle);
}
public static Bitmap RotateImage(Image image, PointF offset, float angle)
{
if (image == null)
throw new ArgumentNullException("image");
Bitmap rotatedBmp = new Bitmap(image.Width, image.Height);
rotatedBmp.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Graphics g = Graphics.FromImage(rotatedBmp);
g.TranslateTransform(offset.X, offset.Y);
g.RotateTransform(angle);
g.TranslateTransform(-offset.X, -offset.Y);
g.DrawImage(image, new PointF(0, 0));
return rotatedBmp;
}
这使它旋转并减速并停止,但我知道这是一种非常糟糕的方式。此外,它真的不允许我在减速和停止之前让它快速旋转一段时间。