VC++6.0 使用TeeChart v8.0 绘制多条曲线及圆滑处理.
根据网络资源整合了一份, 并开发了自己的demo。
http://download.****.net/detail/zdw86/9833470
一、添加控件
(一)创建工程
(二)插入控件
(三)添加类
点完确认之后,要等很长一段时间.期间不要触碰VC++6.0否则程序可能崩溃.
之后弹出下面窗口 ,输入变量名.
二、代码部分
在相应的源文件中添加TeeChart的头文件 (有需要的自己再添加)
#include "tchart.h"
#include "series.h"
#include "valuelist.h"
#include "axes.h"
#include "axis.h"
#include "pen.h"
#include "axislabels.h"
#include "teefont.h"
#include "axistitle.h"
#include "aspect.h"
#include "fastlineseries.h"
#include "titles.h"
#include "fastlineseries.h"
#include "panel.h"
#include "legend.h"
#include "annotationtool.h"
#include "page.h"
#include "strings.h"
#include "gradient.h"
#include "IsoSurfaceSeries.h"
三、初始化部分
//清空chart -----------------------------------
m_chart.ClearChart();
m_chart.RemoveAllSeries();
//CHART框架
m_chart.GetFrame().SetVisible(TRUE);
m_chart.GetFrame().SetColor(RGB(255,255,255));
/*根据自定义背景色来设置,我这里设定背景色为白色,所以也设定为边框为白色,这样就看不到的,如果不加入,该颜色就默认为黑色的
//重要,否则出现边框为默认黑色的.如果要改变背景颜色,那么对应的此处颜色要进行更改的
*/
m_chart.GetPanel().SetColor(RGB(255,255,255));
m_chart.GetLegend().SetVisible(FALSE);
//设置x轴的取值范围
m_chart.GetAxis().GetBottom().SetMinMax(0,100);
//设置x轴上值的格式
m_chart.GetAxis().GetBottom().GetLabels().SetValueFormat("0.0");
//设置取消3D显示
m_chart.GetAspect().SetView3D(FALSE);
// 添加3条曲线 ---------------------------------
int nLine1 = m_chart.AddSeries(0);
int nLine2 = m_chart.AddSeries(0);
int nLine3 = m_chart.AddSeries(0);
// 设置3条曲线的坐标轴 -------------------------
m_chart.Series(nLine1).SetVerticalAxis(0);
m_chart.Series(nLine2).SetVerticalAxis(0);
m_chart.Series(nLine3).SetVerticalAxis(0);
m_chart.Series(nLine1).SetHorizontalAxis(1);
m_chart.Series(nLine2).SetHorizontalAxis(1);
m_chart.Series(nLine3).SetHorizontalAxis(1);
//m_chart.Series(nLine1).GetXValues().SetDateTime(true);
//m_chart.Series(nLine2).GetXValues().SetDateTime(true);
//m_chart.Series(nLine3).GetXValues().SetDateTime(true);
// 设置3条曲线的颜色 ---------------------------
m_chart.Series(nLine1).SetColor(RGB(255,0,0));
m_chart.Series(nLine2).SetColor(RGB(0,255,0));
m_chart.Series(nLine3).SetColor(RGB(0,0,255));
四、绘制部分
(一)添加定时器
(一)在定时器绘制曲线
COleDateTime CurTime = COleDateTime::GetCurrentTime();
COleDateTimeSpan tmSpan = COleDateTimeSpan(0,0,1,0); //1s
CString csTime ;
csTime= CurTime.Format("%H:%M:%S"); //获取当前时间
//在CMyView中画曲线
static int nIndex = 0;
nIndex++;
double yVal1 = sin(nIndex+2);
double yVal2 = sin(nIndex+3);
double yVal3 = sin(nIndex);
m_chart.Series(0).Add(yVal1, csTime,RGB(255,0,0)); //第一个参数是y轴值,第二个参数是对应的x轴的标签值(此为当前时间字符串),第三个参数是所绘点的颜色。
m_chart.Series(1).Add(yVal2, csTime,RGB(0,255,0));
m_chart.Series(2).Add(yVal3, csTime,RGB(0,0,255));
CurTime+= tmSpan;
if(m_chart.Series(0).GetCount() > 100)
{
m_chart.GetAxis().GetBottom().Scroll(1.0,true); //x坐标轴一次移动1格
}
(二)启动定时器
SetTimer(1,1000,NULL);
(三)关闭定时器
五 平滑处理
使用算法实现,更改各点的来实现平滑,
boxFIR类
六 程序运行效果