首页 > 编程知识 正文

数据曲线图怎么做,wpf动图

时间:2023-05-04 16:58:49 阅读:112031 作者:978

kagula

2019-3-18

本节介绍如何以源代码的形式绘制最简单的动态图表。

开发环境,visual studio 2017通信更新5

项目类型: wpf c#.net框架4.6.1

本文对象:有两年没有开发C# WPF的程序员。 在这个例子中,你很快就会想起。

下面是运行效果图,不断显示最新生成的10个据点。

运行程序分为三步

第一步

添加新的WPF项目、参考和WPFVisifire.Charts.dll

第二步

修改xaml,修改的内容如下

windowx : class=' testvisifire.main window ' xmlns=' http://schemas.Microsoft.com/winfx/2006/xaml/presentationt xaml ' xmlns : d=' http://schemas.Microsoft.com/expression/blend/2008 ' xmlns 3360 MC=' 3358 s chement 2006 ' xmlns 3336 assembly=wpfvisifire.charts ' xmlns : local=' clr-namespace : testvisifire ' MC 3360 ignorable=' d ' title=' MAC

用户系统; using system.collections.generic; using System.Linq; using System.Text; 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; using Visifire.Charts; namespacetestvisifire//summary//interactionlogicformainwindow.xaml//summarypublicpartialclassmainwindow 3333随机存取存储器公共主窗口((初始化组件); initChart (; 添加数据2 chart (init timer (; _timer.Start (; }专用void init chart (() /创建标题的对象Title title=new Title ) ); //标题的名称title.Text='abc '; title.padding=new thickness (0,10,5,0 ); //将标题chart.titles.add(title )添加到图标//初始化新的Axis Axis xAxis=new Axis (); 设定axis属性//图表的x轴坐标用什么分类。 例如时分秒xaxis.interval type=interval types.seconds; //图表中x轴坐标的间隔为

2,3,20等,单位为xAxis.IntervalType设置的时分秒。 xAxis.Interval = 1; //设置X轴的时间显示格式为7-10 11:20 xAxis.ValueFormatString = "hh:mm:ss"; //给图标添加Axis chart.AxesX.Add(xAxis); Axis yAxis = new Axis(); //设置图标中Y轴的最小值永远为0 yAxis.AxisMinimum = 0; yAxis.AxisMaximum = 64; //设置图表中Y轴的后缀 yAxis.Suffix = ""; chart.AxesY.Add(yAxis); } private void addData2Chart() { // 创建一个新的数据线。 DataSeries dataSeries = new DataSeries(); // 设置数据线的格式。 dataSeries.RenderAs = RenderAs.Line; dataSeries.XValueType = ChartValueTypes.DateTime; /* for (int i = 0; i < 32; i++) { // 设置数据点 DataPoint dataPoint; // 创建一个数据点的实例。 dataPoint = new DataPoint(); // 设置X轴点 DateTime dt = DateTime.Now; dataPoint.XValue = dt.AddSeconds(i); //设置Y轴点 dataPoint.YValue = i; dataPoint.MarkerSize = 8; dataPoint.Tag = "bbb"; //设置数据点颜色 dataPoint.Color = new SolidColorBrush(Colors.LightGray); //添加数据点 dataSeries.DataPoints.Add(dataPoint); //测试删除前面的点 if(dataSeries.DataPoints.Count>10) { dataSeries.DataPoints.RemoveAt(0); } } */ // 添加数据线到数据序列。 chart.Series.Add(dataSeries); } private void initTimer() { _timer = new System.Timers.Timer(1000); //实例化Timer类,设置间隔时间为10000毫秒; _timer.Elapsed += new System.Timers.ElapsedEventHandler(onTimer); //到达时间的时候执行事件; } public void onTimer(object source, System.Timers.ElapsedEventArgs e) { this.Dispatcher.Invoke(new Action(() => { try { DataSeries ds = chart.Series[0]; DataPoint dataPoint = new DataPoint(); // 设置X轴点 DateTime dt = DateTime.Now; dataPoint.XValue = dt.AddSeconds(10); //设置Y轴点 dataPoint.YValue = _random.Next(1,32); dataPoint.MarkerSize = 8; //设置数据点颜色 dataPoint.Color = new SolidColorBrush(Colors.LightGray); //添加数据点 ds.DataPoints.Add(dataPoint); //测试删除前面的点 if (ds.DataPoints.Count > 10) { ds.DataPoints.RemoveAt(0); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } })); } }}

最后F5就可以运行了。

注意:

[1]如果要让控件自动适应窗口大小建议外面一层用Grid,里面再套StackPanel.

[2]在xaml中等布局好后,最后放visifire, 因为放了visifire,图形编辑环境就不能render了,等有时间,研究下如何解决这个问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。