Live-Charts在WPF中的使用

一、简介

官方地址:Live-Charts (github.com)。Live Charts (lvcharts.net)。

这里说一下高性能的LiveCharts.Geared,这个支持大数据量,最多到百万级别,听说不是免费的,但是我在NuGet中安装了可以使用,不知道后面会不会过期。但是可以从其他途径弄到破解版的,只需要替换dll即可。推荐大家直接学习使用LiveCharts.Geared

这是作者NuGet包的路径,我们将破解版的dll替换lib文件夹中的就可以。

二、简单使用

需要引入命名空间:

    xmlns:geared="clr-namespace:LiveCharts.Geared;assembly=LiveCharts.Geared"xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"

创建控件:

                <!--Here we disable tooltips and hovering to get a better performance--><lvc:CartesianChartAnimationsSpeed="0:0:0.5"DataTooltip="{x:Null}"DisableAnimations="True"Hoverable="False"><lvc:CartesianChart.Series><geared:GLineSeriesFill="Transparent"LineSmoothness="1"PointGeometry="{x:Null}"Stroke="#F34336"StrokeThickness="6"Values="{Binding ChartValues}" /></lvc:CartesianChart.Series><lvc:CartesianChart.AxisX><lvc:AxisLabelFormatter="{Binding DateTimeFormatter}"MaxValue="{Binding AxisMax}"MinValue="{Binding AxisMin}"Unit="{Binding AxisUnit}"><lvc:Axis.Separator><lvc:Separator Step="{Binding AxisStep}" /></lvc:Axis.Separator></lvc:Axis></lvc:CartesianChart.AxisX></lvc:CartesianChart>

在VM中定义了如下的属性:

         private double _trend;private double _axisMax;private double _axisMin;public double AxisMax{get { return _axisMax; }set{_axisMax = value;RaisePropertyChanged();}}public double AxisMin{get { return _axisMin; }set{_axisMin = value;RaisePropertyChanged();}}public GearedValues<MeasureModel> ChartValues { get; set; }public Func<double, string> DateTimeFormatter { get; set; }public double AxisStep { get; set; }public double AxisUnit { get; set; }

业务逻辑如下:

var mapper = Mappers.Xy<MeasureModel>().X(model => model.DateTime.Ticks)   //use DateTime.Ticks as X.Y(model => model.Value);           //use the value property as Y//lets save the mapper globally.Charting.For<MeasureModel>(mapper);//the values property will store our values arrayChartValues = new GearedValues<MeasureModel>();ChartValues.WithQuality(Quality.Low);//lets set how to display the X LabelsDateTimeFormatter = value => new DateTime((long)value).ToString("mm:ss");//AxisStep forces the distance between each separator in the X axisAxisStep = TimeSpan.FromSeconds(1).Ticks;//AxisUnit forces lets the axis know that we are plotting seconds//this is not always necessary, but it can prevent wrong labelingAxisUnit = TimeSpan.TicksPerSecond;SetAxisLimits(DateTime.Now);Task.Run(() =>{var r = new Random();while (true){Thread.Sleep(150);var now = DateTime.Now;_trend += r.Next(-8, 10);ChartValues.Add(new MeasureModel{DateTime = now,Value = _trend});SetAxisLimits(now);//lets only use the last 150 valuesif (ChartValues.Count > 150) ChartValues.RemoveAt(0);}});private void SetAxisLimits(DateTime now){AxisMax = now.Ticks + TimeSpan.FromSeconds(1).Ticks; // lets force the axis to be 1 second aheadAxisMin = now.Ticks - TimeSpan.FromSeconds(8).Ticks; // and 8 seconds behind}

我们往集合中添加数据,在view中就会自动更新,一个动态更新的线图就简单完成了。更多复杂的功能可以参考链接中的教程。

Live-Charts在WPF中的使用相关推荐

  1. WPF中嵌套charts图表查询数据

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:WPF .Charts 撰写日期:2020年09月16 ...

  2. WPF中的MatrixTransform

    WPF中的MatrixTransform                                                                              周银 ...

  3. WPF中ControlTemplate和DataTemplate的区别

    原文:WPF中ControlTemplate和DataTemplate的区别 下面代码很好的解释了它们之间的区别: <Window x:Class="WPFTestMe.Window1 ...

  4. WPF中获取鼠标相对于桌面位置

    原文:WPF中获取鼠标相对于桌面位置 var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFr ...

  5. WPF中StringFormat的用法

    原文:WPF中StringFormat的用法 WPF中StringFormat的用法可以参照C#中string.Format的用法 1. C#中用法: 格式化货币(跟系统的环境有关,中文系统默认格式化 ...

  6. WPF中对三维模型的控制

    原文:WPF中对三维模型的控制 (以下选自南开大学出版社出版的<WPF和Silverlight教程>) 3Dmax中的建模模型可以导出为obj文件格式,将此文件导入WPF项目中,由WPF完 ...

  7. WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  8. WPF中Binding使用StringFormat格式化字符串方法

    原文:WPF中Binding使用StringFormat格式化字符串方法 货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0 ...

  9. WPF中获取鼠标相对于屏幕的位置

    WPF中获取鼠标相对于屏幕的位置                                   周银辉 WPF编程时,我们经常使用Mouse.GetPosition(IInputElement ...

  10. WPF中的动画——(二)From/To/By 动画

    原文:WPF中的动画--(二)From/To/By 动画 我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画: var widthAnimati ...

最新文章

  1. php上传图片k,PHP fastcgi模式上传大文件(大约有300多K)报错,
  2. 线性结构--离散存储 链表讲解
  3. html 窗口页面设置
  4. conda和pip的区别
  5. Django3 --- async
  6. 乐视网被列入经营异常名录 因登记经营场所无法联系
  7. 关于阿里云OSS报错-java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException
  8. WordPress淘宝客ZZDGM主题Upanel插件使用补充
  9. 拓扑排序以及拓扑排序算法
  10. 人工智能基础知识入门
  11. 服务器系统开机提示0xc000007b,重装系统出现0xc000007b无法正常启动怎么解决
  12. ArangoDB数据类型
  13. 无聊科技正经事(第7期):跟村上春树学跑步,向古川武士学养成
  14. 列变位法解密(2016百度之星 - 测试赛(热身,陈题))
  15. 谷歌艺术和文化应用强势冲榜
  16. 测牛学堂:2023软件测试自动化python入门(字符串的格式化输出)
  17. 机器学习——KNN分类器的学习
  18. LinkedIn领英开发客户方法大全(篇二)
  19. oracle 8i,9i和10g 的区别
  20. 【中英双语】计算机视觉Opencv、Python大师班

热门文章

  1. 鼠标右键转圈圈_【鼠标右键一直在转圈圈】鼠标右键一直在闪_鼠标一直在转圈圈...
  2. 胡彦斌and音乐密码 MUSIC CODE
  3. 《经营的本质》序“经营的逻辑”--读后感及读书笔记
  4. 两个月面试30+公司,我得到了这些经验教训
  5. 如何在Mysql中运行SQL文件
  6. 独孤密码-非对称加密算法RSA解析
  7. jQuery和纯js实现addClass、removeClass方法
  8. 批量将 txt 记事本文件按照固定行数拆分成单个独立的 txt 小文件
  9. 双机热备 ip地址_双机热备软件哪个好?双机热备软件推荐
  10. doc转html poi,java poi doc 转html