计时器/秒表实现自动化
本文关键字:实现 自动化 计时器 | 更新日期: 2023-09-27 17:57:56
我有一个带多边形指针的圆形仪表(进度条),当我在列表框中选择一个数字时,指针会上升到类似汽车速度的程度(效果很好)
我想做的是自动遍历列表项(0,1,2,3,….60)的索引,这样指针就会慢慢上升,直到达到60的速度。然后,我想拿多久就拿多久,这样我就可以移动定位针并相应地运行里程表。我试着在MVC类中使用计时器,并使用秒表。我可以选择索引0-6,但它只会跳到最后一个。我正在尽我所能模拟汽车仪表板。。。你有什么想法?
public partial class MainWindow : Window
{
//DispatcherTimer timer;
List<Double> _items = new List<Double>();
DispatcherTimer timer;
public MainWindow()
{
this.InitializeComponent();
listBox1.ItemsSource = new List<double>() { 0,1,2,3,4,5,10,11,12,13,14, 15, 20, 25, 30, 35, 40 };
checkBox1.IsChecked = true;
park.Foreground = Brushes.Red;
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(2500);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
int second = DateTime.Now.Second;
firstDigitsec = second / 10;
int secondDigitsec = second % 10;
checkBox1.IsChecked = false;
first.Foreground = Brushes.Green;
park.Foreground = Brushes.White;
checkBox2.IsChecked = true;
Stopwatch stopwatch = Stopwatch.StartNew();
listBox1.SelectedIndex = 0;
listBox1.SelectedIndex = 1;
listBox1.SelectedIndex = 2;
listBox1.SelectedIndex = 3;
}
private int _stopw;
public int sw
{
get { return _stopw; }
set
{
_stopw = value;
OnPropertyChanged("");
}
}
private int _firstDigitsec;
public int firstDigitsec
{
get { return _firstDigitsec; }
set
{
_firstDigitsec = value;
OnPropertyChanged("");
/*
if (firstDigitsec < 1)
{
listBox1.SelectedIndex = 0;
}
if (firstDigitsec < 2)
{
*/
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
由于您正在使用WPF,这听起来像是动画的一个很好的候选者
使用绑定将Gauge的Progress属性绑定到视图模型中的Progress特性,并应用DoubleAnimation将Progress特性从上一个值动画化为新值