Live-Charts在WPF中的使用
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中的使用相关推荐
- WPF中嵌套charts图表查询数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:WPF .Charts 撰写日期:2020年09月16 ...
- WPF中的MatrixTransform
WPF中的MatrixTransform 周银 ...
- WPF中ControlTemplate和DataTemplate的区别
原文:WPF中ControlTemplate和DataTemplate的区别 下面代码很好的解释了它们之间的区别: <Window x:Class="WPFTestMe.Window1 ...
- WPF中获取鼠标相对于桌面位置
原文:WPF中获取鼠标相对于桌面位置 var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFr ...
- WPF中StringFormat的用法
原文:WPF中StringFormat的用法 WPF中StringFormat的用法可以参照C#中string.Format的用法 1. C#中用法: 格式化货币(跟系统的环境有关,中文系统默认格式化 ...
- WPF中对三维模型的控制
原文:WPF中对三维模型的控制 (以下选自南开大学出版社出版的<WPF和Silverlight教程>) 3Dmax中的建模模型可以导出为obj文件格式,将此文件导入WPF项目中,由WPF完 ...
- WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
- WPF中Binding使用StringFormat格式化字符串方法
原文:WPF中Binding使用StringFormat格式化字符串方法 货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0 ...
- WPF中获取鼠标相对于屏幕的位置
WPF中获取鼠标相对于屏幕的位置 周银辉 WPF编程时,我们经常使用Mouse.GetPosition(IInputElement ...
- WPF中的动画——(二)From/To/By 动画
原文:WPF中的动画--(二)From/To/By 动画 我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画: var widthAnimati ...
最新文章
- php上传图片k,PHP fastcgi模式上传大文件(大约有300多K)报错,
- 线性结构--离散存储 链表讲解
- html 窗口页面设置
- conda和pip的区别
- Django3 --- async
- 乐视网被列入经营异常名录 因登记经营场所无法联系
- 关于阿里云OSS报错-java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException
- WordPress淘宝客ZZDGM主题Upanel插件使用补充
- 拓扑排序以及拓扑排序算法
- 人工智能基础知识入门
- 服务器系统开机提示0xc000007b,重装系统出现0xc000007b无法正常启动怎么解决
- ArangoDB数据类型
- 无聊科技正经事(第7期):跟村上春树学跑步,向古川武士学养成
- 列变位法解密(2016百度之星 - 测试赛(热身,陈题))
- 谷歌艺术和文化应用强势冲榜
- 测牛学堂:2023软件测试自动化python入门(字符串的格式化输出)
- 机器学习——KNN分类器的学习
- LinkedIn领英开发客户方法大全(篇二)
- oracle 8i,9i和10g 的区别
- 【中英双语】计算机视觉Opencv、Python大师班
热门文章
- 鼠标右键转圈圈_【鼠标右键一直在转圈圈】鼠标右键一直在闪_鼠标一直在转圈圈...
- 胡彦斌and音乐密码 MUSIC CODE
- 《经营的本质》序“经营的逻辑”--读后感及读书笔记
- 两个月面试30+公司,我得到了这些经验教训
- 如何在Mysql中运行SQL文件
- 独孤密码-非对称加密算法RSA解析
- jQuery和纯js实现addClass、removeClass方法
- 批量将 txt 记事本文件按照固定行数拆分成单个独立的 txt 小文件
- 双机热备 ip地址_双机热备软件哪个好?双机热备软件推荐
- doc转html poi,java poi doc 转html