写在前面
这是ComponentOne For WPF学习的第三篇文章,我对比着读了前两篇文章,感觉还是后者读起来比较舒服和顺畅,所以以后的文章可能都会用这种写法,给他起个名字吧,就叫同步学习法。。。。。
这篇文章我们来学习怎么用C1Chart来显示实时数据。看起来好像很难哇,所以在动手前要先分析一下实时数据实现步骤,主要有一个不断更新的数据,然后不断的更新到图表里面,那么我们首先就要解决这个不断更新的数据,这里我是用定时器来解决这个问题
不断更新的数据
废话不多说,上代码
void Update()
{
chart.BeginUpdate();
int cnt = nAddPoints;//每次增加的点数
for(int i=0;i<cnt;i++)
{
double r = random.NextDouble();//创建随机数
double y = (10*r*Math.Sin(0.1*counter)*Math.Sin(0.6*random.NextDouble()*counter));
//经过一点的数据加工
_pts.Add(new Point(counter++,y*100));
}
int ndel = _pts.Count - nMaxPoints;//nMaxPoints,图表中最多呈现的点数
if(ndel>0)
{
for(int i=0;i<ndel;i++)
{
_pts.RemoveAt(0);//新的进来,旧的出去
}
chart.EndUpdate();
}
}
这就一个简单的产生随机点的代码,将他放在定时器中循环运行,就形成了一个不断生成随机数的模块,上代码
DispatcherTimer dt = new DispacherTimer()
{ Interval = TimeSpan.FormSeconds(0.2) };//创建一个定时器
dt.Tick += (s,e) => Update(); //添加事件
dt.Start(); //定时器开始工作
这样我们就完成了,随机数的连续生成,那么下面就是创建一个简单的图标,这里就不再复述了,参考前一篇文章里的内容,那么就剩下数据绑定了
数据源绑定
这里的代码其实我也不太懂,不管如何,先上代码,写完在分析
//创建一个数据源对象,并设置相关属性
XYDataSeries ds = new XYDataSeries()
{
XValueBinding = new Binding("X"),
ValueBinding = new Binding("Y"),
CounectionStrokeThickness = 2,
}
chart.Data.Children.Add(ds);//将这个数据源对象及其配置导入
chart.Data.ItemSource = _pts;//数据绑定
chart.ChartType = ChartType.Line;//制定图表的类型
这样我们就完成了一个实时数据的动态C1图表
tips对比这里的数据源绑定和前两篇文章有什么不同,就能理解这的数据源对象用法了
!!