C#中的简单运动

时间:2013-07-22 18:10:25

标签: c# winforms location

我希望标签从表单左侧移动并停在中心

我已经能够使用

执行此操作
    Timer tmr = new Timer();
    int locx = 6;
    public Form1()
    {
        InitializeComponent();
        tmr.Interval = 2;
        tmr.Tick += new EventHandler(tmr_Tick);
    }

    void tmr_Tick(object sender, EventArgs e)
    {
        label1.Location = new Point(locx, 33);
        locx++;
        if (locx == 215)
        {
            tmr.Stop();
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        label1.Text = "QUICK SPARK";
        tmr.Start();
    }

我想知道是否有更好的方法可以做到这一点??? ...任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

如果您使用的是VS 2012和C#5,则只需通过await / async执行此操作:

private async void Form1_Load(object sender, EventArgs e)
{
    label1.Text = "QUICK SPARK";

    for (int locx = 6; locx < 215; ++locx)
    {
        await Task.Delay(2);
        label1.Location = new Point(locx, 33);
    }
}

答案 1 :(得分:0)

  

WinForm动画库[.Net3.5 +]

     

一个简单的库,用于在.Net WinForm(.Net中)中设置控件/值的动画   3.5及以后)。基于关键帧(路径)并可完全自定义。

https://falahati.github.io/WinFormAnimation/

new Animator2D(
        new Path2D(new Float2D(-100, -100), c_control.Location.ToFloat2D(), 500))
    .Play(c_control, Animator2D.KnownProperties.Location);

这会将c_control控件从-100,-100移动到500毫秒内的第一个位置。