C#从左向右移动标签

时间:2014-02-25 17:14:40

标签: c# timer label

我想知道是否有任何使用计时器动画标签的解决方案?我希望label2慢慢地向左移动,直到击中label1并且当它被击中时,从已经开始向左的位置向后移动。 我试过这个,但是什么时候击中label1就停止了:

       label2.Location = new Point(label2.Location.X - 4, label2.Location.Y);

        if (label2.Location.X == label1.Location.Y)
        {
            label2.Location = new Point(label2.Location.X + 4, label2.Location.Y);
        }

2 个答案:

答案 0 :(得分:3)

您正在比较label2.Location.X == label1.Location.Y,这似乎是一个错字。

你需要一个方向变量,你需要存储Label2的原始位置,以便它知道去哪里:

label2.Location = new Point(label2.Location.X + step, label2.Location.Y);
if (label2.Location.X <= label1.Location.X) {
  step = 4;
} else if (label2.Location.X >= originalX) {
  step = -4;
}

设置变量:

int step = -4;
int originalX;

然后使用Load覆盖方法设置originalX值:

protected override void OnLoad(EventArgs e) {
  base.OnLoad(e);
  originalX = label2.Location.X;
}

答案 1 :(得分:1)

我认为你总是离开。你不应该使用变量来跟踪你想要移动的方向。

从这个意义上说,你需要检查你何时到达正确的边缘以便再次改变方向。