zoukankan      html  css  js  c++  java
  • WPF基于Live Charts实现波形图

    using LiveCharts;//livecharts.net
    using LiveCharts.Wpf;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    namespace WpfApplication1
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public SeriesCollection seriesColloection { get; set; }//系列集合
            AxesCollection axisx = new AxesCollection();
            private double receivedData;
            Task t;
            public List<string> labels { get; set; }
            public double[] yA = { 67,72,81,85,90,80,25};
            public MainWindow()
            {
                InitializeComponent();
                LineSeries lineA = new LineSeries();//一条折线
                lineA.Title = "A";
                lineA.LineSmoothness = 0;
                lineA.PointGeometry = null;
                labels = new List<string> { "2019/10/10", "2019/10/12", "2019/10/14", "2019/10/16", "2019/10/18", "2019/10/20" };//横坐标数据
                lineA.Values = new ChartValues<double>(yA);
                seriesColloection = new SeriesCollection();
                seriesColloection.Add(lineA);
                this.lvcChart.lvcsub.Series = seriesColloection;
                this.lvcChart.lvcsub.AxisX.Add(new Axis {Title="A",Labels= labels });
                this.lvcChart.label1.Content = "Original"; 
            }
            public void onData_Received() {

                t=Task.Run(()=>//从ThreadPool选一个可用的thread;没有则新建一个
                {
                    var fromRandom = new Random();
                    while (true)
                    {
                        Thread.Sleep(1000);//每隔半秒
                        receivedData = fromRandom.Next(-100,100);
                        this.Dispatcher.Invoke(()=> {//通过Dispatcher更新控件数据。UI线程之一Dispatcher负责控件相关的事件的处理
                            labels.Add(DateTime.Now.AddMilliseconds(100).ToString()); //更新X轴数据
                            labels.RemoveAt(0);
                            seriesColloection[0].Values.Add(receivedData);//更新Y轴数据
                            seriesColloection[0].Values.RemoveAt(0);
                            this.lvcChart.label1.Content = "Live";
                        });

                    }


                });
            }
            private void button_Click(object sender, RoutedEventArgs e)
            {
                onData_Received();
            }
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                if (t != null)
                {
                    t.Dispose();//异常
                    t = null;
                    GC.Collect();
                }
            }

        }
    }

  • 相关阅读:
    springmvc 项目完整示例08 前台页面以及知识点总结
    springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
    springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
    springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
    springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
    springmvc 项目完整示例03 小结
    springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
    springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
    spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
    spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
  • 原文地址:https://www.cnblogs.com/80028366local/p/12769504.html
Copyright © 2011-2022 走看看