我是 C# 的新手。我必须尝试使用带有计时器的线性插值公式将图像从 a 点移动到 b 点,并且它进行了更新。
但是我在想是否有可能在没有计时器的情况下做同样的事情。是否可以?
这是我的示例代码。
if (Car_move == true)
{
x = Convert.ToInt32(Source.X + time * (Dest.X - Source.X));
y = Convert.ToInt32(Source.Y + time * (Dest.Y - Source.Y));
G.DrawImage(Car, x - 10, y - 10, 20, 20);
if ((Math.Sqrt((Math.Pow(Math.Abs(x - Source.X), 2) + Math.Pow(Math.Abs(y -
Source.Y), 2)))) >= Distance)
{
x = Dest.X;
y = Dest.Y;
Car_move = false;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (time >= 1)
{
time -= 1;
}
time +=0.02f;
panel1.Refresh();
Invalidate();
}
这是我尝试过的。我仍然试图找出不使用计时器来做同样的事情。
是的,有很多选择,一个是带有等待/睡眠的简单循环。另一种方法是进行事件驱动,例如您的 car.move 属性,每次更改时,您都可以关闭油漆。或者 task.continuewith( 不会是我的第一选择...
循环:
bool StopRunning = false;
while (!StopRunning)
{
panel.Invalidate();
Thread.Sleep(1000);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句