C# 使物体以恒定速度运动

C# 使物体以恒定速度运动,c#,timer,C#,Timer,我正在使用计时器设置对象的动画,使其以恒定速度移动 这是我的密码: Class class1 = new Class(); public int x; public int y; public Form1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e

我正在使用计时器设置对象的动画,使其以恒定速度移动

这是我的密码:

  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;
    }
}
正方形在加速,有没有办法让它以恒定的速度移动?

你每次都在增加“x”,然后将其用作移动的增量。点评:

 // x += 1;
 class1.Move(x/2, x/2);
您还需要为此指定一个默认的“x”。

您每次都要递增“x”,然后将其用作移动的增量。点评:

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

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

选择一些更好的名称,问题就会变得更清楚
x
是一个位置,
dx
是一个速度<代码>移动(x/2,x/2)看起来确实在远离原点加速。这是Windows窗体应用程序吗?选择一些更好的名称,问题就会变得更清楚
x
是一个位置,
dx
是一个速度<代码>移动(x/2,x/2)看起来像是从原点加速。这是Windows窗体应用程序吗?如果我错了,请纠正我,但使用此代码,正方形不会保持静止吗?@user2432378如果在开始时将x设置为非零值,则不会。“移动”方法递增:
x=x+x/3谢谢!如果我错了,请纠正我的错误,但是使用此代码,正方形不就是静止的吗?@user2432378如果在开始时将x设置为非零值,则不会。“移动”方法递增:
x=x+x/3谢谢!非常感激