使用For循环(C#)滑动对象

时间:2010-06-20 10:26:55

标签: c# .net winforms animation

我做了很多搜索,并没有找到任何帮助。

是否可以使用C#“滑动”或“移动”,使用简单的For循环将对象从一个位置移动到另一个位置?

谢谢

2 个答案:

答案 0 :(得分:3)

我建议您使用Timer。还有其他选择,但如果你想避免线程问题等,这将是简单的。

使用直接for循环将要求您使用Application.DoEvents()抽取消息队列以确保窗口有机会实际呈现更新的控件,否则for循环将运行完成而不更新UI和控件将显示从源位置跳转到目标位置。

这是一个QAD示例,用于在单击时为Y方向上的按钮设置动画。此代码假定您在名为animationTimer的表单上放置了一个计时器控件。

private void button1_Click(object sender, EventArgs e)
{
  if (!animationTimer.Enabled)
  {
    animationTimer.Interval = 10;
    animationTimer.Start();
  }
}

private int _animateDirection = 1;
private void animationTimer_Tick(object sender, EventArgs e)
{
  button1.Location = new Point(button1.Location.X, button1.Location.Y + _animateDirection);

  if (button1.Location.Y == 0 || button1.Location.Y == 100)
  {
    animationTimer.Stop();
    _animateDirection *= -1; // reverse the direction
  }
}

答案 1 :(得分:1)

假设您正在谈论的对象是某种Control,您可以更改它的Location属性。

这样的事情:

for(int i = 0; i < 100; i++)
{
    ctrl.Location.X += i;
}

我认为应该工作。