wpf利用Visifire.Chart实现实时曲线绘制

xiaoxiao2021-02-28  175

1.添加引用库WPFVisifire.Charts.dll至工程; 2.using Visifire.Charts 3.xmal中新建一个Grid 命名为 Simon

<Grid Name="Simon" Grid.Column="5" Grid.ColumnSpan="1" Grid.Row="11" Grid.RowSpan="2" Background="WhiteSmoke" />

4.建立两个list数组作为数据传入接口

private Chart chart; private List<string> strListx = new List<string>() { "1次", "3次", "5次", "7次", "9次" }; private List<string> strListy = new List<string>() { "100","80","40","70","6" };

5。建立一个创建波形函数,并将其放在初始化函数里面

public void CreateChartColumn(string name, List<string> valuex, List<string> valuey) { //创建一个图标 chart = new Chart(); //设置图标的宽度和高度 chart.Width = 480; chart.Height = 280; chart.Margin = new Thickness(50, 5, 50, 5); //是否启用打印和保持图片 chart.ToolBarEnabled = false; //设置图标的属性 chart.ScrollingEnabled = false;//是否启用或禁用滚动 chart.View3D = false;//3D效果显示 //创建一个标题的对象 Title title = new Title(); //设置标题的名称 title.Text = name; title.Padding = new Thickness(0, 10, 5, 0); //向图标添加标题 chart.Titles.Add(title); Axis yAxis = new Axis(); //设置图标中Y轴的最小值永远为0 yAxis.AxisMinimum = 0; //设置图表中Y轴的后缀 yAxis.Suffix = "A"; chart.AxesY.Add(yAxis); // 创建一个新的数据线。 DataSeries dataSeries = new DataSeries(); // 设置数据线的格式 dataSeries.RenderAs = RenderAs.StackedColumn;//柱状Stacked // 设置数据点 DataPoint dataPoint; for (int i = 0; i < valuex.Count; i++) { // 创建一个数据点的实例。 dataPoint = new DataPoint(); // 设置X轴点 dataPoint.AxisXLabel = valuex[i]; //设置Y轴点 dataPoint.YValue = double.Parse(valuey[i]); //添加一个点击事件 //dataPoint.MouseLeftButtonDown += new MouseButtonEventHandler(dataPoint_MouseLeftButtonDown); //添加数据点 dataSeries.DataPoints.Add(dataPoint); } // 添加数据线到数据序列。 chart.Series.Add(dataSeries); //将生产的图表增加到Grid,然后通过Grid添加到上层Grid. Grid gr = new Grid(); gr.Children.Add(chart); this.Simon.Children.Add(gr); }

6.调用接口如下:

CreateChartColumn("电流奇次谐波表", strListx, strListy);

7.新建一个定时器更新柱状图数据

private DispatcherTimer upcharttimer = new DispatcherTimer(); //定时器初始化放入界面初始化中 upcharttimer.Tick += new EventHandler(_timer_Tick); upcharttimer.Interval = TimeSpan.FromSeconds(1); //函数放入类中 void _timer_Tick(object sender, EventArgs e) { float[] disdata = new float[5]; for(int i=0;i<5;i++) { disdata[i] = (float)Math.Sqrt(featvec[i * 2] * featvec[i * 2] + featvec[i * 2 + 1] * featvec[i * 2 + 1]); chart.Series[0].DataPoints[i].YValue = disdata[i]; } } //利用按键进行定时器开始和停止 upcharttimer.Stop(); upcharttimer.Start();
转载请注明原文地址: https://www.6miu.com/read-20579.html

最新回复(0)