计时器/秒表实现自动化

本文关键字:实现 自动化 计时器 | 更新日期: 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特性从上一个值动画化为新值