1

所以,我有一个矩形“rectangle1”,位于 160,160。

我希望它平稳地移动到坐标 160,30,持续时间约为 1 秒。(时间延迟)

我发现移动形状的一些基本代码是

rectangle1.Location = new Point(160,30);

但是,当我尝试使用 for 循环时

rectangle1.Location = new Point(160, rectangle1.Location.Y - 100);

它只是立即移到那里。我真的应该预料到的。同样发生在

int count = 0;
while(count != 300)
{
       rectangle1.Location = new Point(160, rectangle1.Location.Y -1);
       count += 2;
}

所以,我假设我需要某种时钟/定时器循环,将它移动x pixels every x milliseconds. 不知道如何做到这一点,所以帮助将不胜感激。


另外,我将在水平方向上为另外两个矩形设置动画,然后它们将以与矩形 1 相同的时间/速度向上移动。我想我必须“延迟”rectangle1 的移动,直到它们就位,对吗?

谢谢。

PS:我在谷歌上搜索了很多,但由于我不完全确定我在寻找什么,所以效果不是很好。

4

1 回答 1

3

如果你需要流畅的动作,最好使用计时器、线程、后台工作者。

这是您需要做的。假设您有为形状增加/减少 x,y 点的代码。

脚步:

  • 将计时器间隔设置为例如 100

  • 设置一个整数 int count=0; *

  • 在 timer_tick 事件中做移动工作

     private void timer1_Tick(object sender, EventArgs e)
     // no need to use your while loop anymore :))
      {       
       If(count< 300) //set to your own criteria
       {
         //e.g. myrect.location=new point(x,y);
         // rectangle1.Location = new Point(160, rectangle1.Location.Y -1);       
       }
    
        count += 2;
    }
    
于 2012-12-01T13:54:47.510 回答