WPF基于Live Charts实现波形图

摘要:
=Null){t.Dispose();//异常t=Null;GC.Collect();}}}}

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();
            }
        }

    }
}

免责声明:文章转载自《WPF基于Live Charts实现波形图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS屏幕旋转 浅析BeyondCompare4完美"破解"下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 多语言解决方案

1、首先安装Multilingual App Toolkit 2、新建项目,在VS中点击"工具" -> "Multilingual App Toolkit" -> "启用选定内容" 如果出现上述Issue, 打开项目AssemblyInfo.cs文件,加入如下代码片段,然后重复Step 2. [assembly: NeutralRes...

rdlc水晶报表在wpf里的使用

1引用程序集  Microsoft.ReportViewer.WinForms 2 xaml 命名空间 xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms" 3 xaml 里用windowsFormsHost ...

WPF通过DynamicResource实现给界面动态更换皮肤

    在我们的程序中有时候需要去实现动态更换皮肤的效果,从而完成一些个性化的设置,那么我们究竟怎样去实现动态换皮肤的效果呢?那么我们经常用到的就是设置不同的Style,并且在主程序的xaml文件中通过DynamicResource引用这些Style,当我们点击更换皮肤时我们就动态去改变这些Style,从而实现动态去更换皮肤的操作。我们知道当我们使用Sty...

WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻

DevExpress广泛应用于ECM企业内容管理、 成本管控、进程监督、生产调度,在企业/政务信息化管理中占据一席重要之地。通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能...

WPF MVVM实现ListBox添加不同的控件

和之前一样,新建一个WPF工程,Models,Views,ViewModels文件夹,另外添加Selector文件夹。 第一,Selector文件夹中添加TemplateSelectorDemo类 public class TemplateSelectorDemo: DataTemplateSelector { public...

Wpf之Xaml属性值和特性值(一)

其实我一直很好奇在xaml中,通过Attribute=Value这种方式可以进行对元素的描述, 例如: <Rectangle Name=” rectangle” Fill=”Blue”/> 这是一个矩形,并且利用蓝色来填充。我们知道在wpf中给UI元素上色可以用Brush(画刷),在MSDN中得知Rectangle.Fill就是一个Brush类...