VC6 下学习使用Teechart8记录 二 绘制实时曲线
接着上一篇文章,本次我的任务是绘制一个实时曲线图,可以实现坐标轴以及曲线随着数据的增加而移动。
要完成该功能,首先应该为该图表指定一个对象用于操作。单击图表,选择 建立类向导,点击member variables选项卡,点击add variable按钮,弹出添加变量对话框,输入m_chart后点击OK,一个与该图表控件对应的控件变量就建立完成了。进入类视图,看到dlg类中多了一个m_chart变量。
首先,我们利用该变量为该图表填充随机的初始数据。在使用之前,需要包含一些头文件,于是,在XXXDlg.cpp的上面添加如下代码:
#include "tchart.h"
#include "axis.h"
#include "axes.h"
#include "scroll.h"
#include "series.h"
然后在OnInitDialog()方法中添加如下代码:
// TODO: Add extra initialization here
m_chart.Series(0).FillSampleValues(50);
这是点击运行以后,就可以看到图表控件上输出了50个点连成的曲线了。如下图所示
下一步我们要做的是让曲线动起来。简单分析一下,要让曲线动起来,可以将左侧的点隐藏,右侧再增加一些新的点。我们可以设置一个定时器,比如1s,每隔1s增加一个数,这样的话数据就可以不断增长了。
即添加如下代码:
//在OnInitDialog()中添加
SetTimer(1,1000,NULL);
然后为dlg类添加WM_TIMER的消息响应函数,并添加代码:
void CChartDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_chart.Series(0).Add(900,"lable",1);
CDialog::OnTimer(nIDEvent);
}
这里需要说明一下,add方法的三个参数,第一个为y值,我添加的是900,第二个为x轴的标签,第三个我不懂,希望有知道的人告诉我一声,谢谢了。添加完毕后可以运行了,这时大家可以发现曲线在动,横坐标消失,变成了lable,而且左侧的曲线没有移出界面,而是曲线整个压缩,这不是我们想要的效果。所以我们还要再做更改。
首先进入资源视图,点击对话框,右键单击编辑属性点击tools选项,单击add添加工具。teechart8有很多的工具给我们选择,这里我们点击axis选项卡,选中axis scroll工具后点击add后回到编辑窗,在axis下拉框中选择bottom axis,然后关闭属性编辑即可。
接下来,需要实现坐标轴的移动。很简单,只需要在OnTimer中添加中间的那一句代码,
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void CChartDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_chart.Series(0).Add(900,"lable",1);
m_chart.GetAxis().GetBottom().Scroll(1.0,TRUE);
CDialog::OnTimer(nIDEvent);
}
完成后运行,基本就可以了。坐标轴和曲线后可以移动了。还有些需要更改的地方,比如横坐标改成时间显示,新增的点不是固定的900,而是随机数。这些都比较简单,读者自行琢磨吧~~~
本次的任务就基本完成了,下一次想实现从数据库中读取数据进行绘图。