0

我正在使用计时器来动画对象以恒定速度行进。

这是我的代码:

  Class class1 = new Class();
    public int x;
    public int y;

    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnPaint(PaintEventArgs e)
    {    
        Graphics g = e.Graphics;
        class1.Draw(g);
    }
 private void timer1_Tick(object sender, EventArgs e)
    {
        x += 1;
        class1.Move(x/2, x/2);
        Invalidate();

    }

班级:

  class Class
{
    private int x;
    private int y;

    public void Draw(Graphics g)
    {
        SolidBrush Brush = new SolidBrush(Color.White);
        g.FillRectangle(Brush, x, y, 10, 10);
    }

    public void Move(int X, int Y)
    {
        x = x + X/3;
        y = y + Y/3;
    }
}

广场正在加速,有什么想法可以让它匀速行驶吗?

4

1 回答 1

3

您每次都在递增“x”,然后将其用作移动的增量。注释掉:

 // x += 1;
 class1.Move(x/2, x/2);

您还需要为此指定一个默认的“x”。

于 2013-06-03T18:17:56.860 回答