在特定时间内将对象移动指定距离

时间:2011-12-27 12:47:31

标签: c# progress-bar

我需要创建类似于进度条的内容,但随着时间的推移逐渐移动到表单的右侧而不是完成百分比。调用移动方法时需要指定时间和距离,例如我希望对象在10秒内向右移动200px。

我只想获得一些关于最佳方法的建议?

我正在考虑使用计时器并在每次打勾后将对象1px向右移动,然后通过设置对刻度的限制来限制时间。此外,对象需要看起来像一条直的垂直线。我正在考虑使用一条线的图像,因为我比绘制图像更熟悉这一点,但是画一条线,然后不断地重新绘制它(比如拖动)是一种更好的方法吗?

1 个答案:

答案 0 :(得分:0)

快速而又脏的东西:

public Form1()
{
    InitializeComponent();

    const int maxWidth = 200;
    const int maxTicks = 10;
    var currentTick = 0;

    // Create panel and add it to this form
    var panel = new Panel { Location = new Point(1, 1), BackColor = Color.Blue, Width = 0, Height = 5 };
    Controls.Add(panel);

    // Create timer that handles updates
    var t = new Timer { Interval = 1000 };
    t.Tick += delegate
    {
        panel.Width = maxWidth / maxTicks * currentTick;
        if (currentTick++ != maxTicks)
            return;
        panel.BackColor = Color.Green;
        t.Dispose();
    };
    t.Start();
}