我需要创建类似于进度条的内容,但随着时间的推移逐渐移动到表单的右侧而不是完成百分比。调用移动方法时需要指定时间和距离,例如我希望对象在10秒内向右移动200px。
我只想获得一些关于最佳方法的建议?
我正在考虑使用计时器并在每次打勾后将对象1px向右移动,然后通过设置对刻度的限制来限制时间。此外,对象需要看起来像一条直的垂直线。我正在考虑使用一条线的图像,因为我比绘制图像更熟悉这一点,但是画一条线,然后不断地重新绘制它(比如拖动)是一种更好的方法吗?
答案 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();
}