0

ホイールを回転させる必要があるゲームがありますが、停止したいときに設定できるようにしたいのですが、タイマーを使用せずに速度を落とす方法を理解できれば問題ありません。その部分。

私がこれまでに持っているのは、私が見つけたrotateimage関数であり、タイマーを使用して(間隔を変更して)遅くしています。私が求めているのは、Winformsで、これを行うためのより良い方法があるかどうかです。これは、数回高速に回転させてから減速してから停止する必要があるためです。

これは多くの異なる言語で解決できることがわかりましたが、C# の勝利フォームではありません。可能かどうか知りたかった。

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

これにより、回転して減速し、停止しますが、それを行うのは本当に悪い方法です。また、減速して停止する前に、しばらく高速で回転させることはできません。

4

1 に答える 1