Hight-Speed Charting是开源免费
先到codeproject下载源码包ChartCtrl_source.zip百度云盘
下载完成后解压到工程目录下ChartCtrl
1、导入工程到工程添加文件夹chartctrl
2、在基本对话框加入Custom Control
这个style为什么设置0x52010000我就不知道啦
3、加入头文件,这里只用简单的功能
#include "ChartCtrl/ChartCtrl.h"
#include "ChartCtrl/ChartLineSerie.h"
#include "ChartCtrl/ChartTitle.h"
4、给按钮添加响应函数,我这里是以时间为单位
void GRAPH::OnBnClickedButtonOk()
{
m_Chart.RemoveAllSeries(); //先清空
CChartAxis * pAxis = NULL;
CChartDateTimeAxis * pDateAxis = NULL;
pDateAxis = NULL;
pDateAxis = m_Chart.CreateDateTimeAxis(CChartCtrl::BottomAxis);
pDateAxis -> SetAutomatic( true );
pDateAxis -> SetTickLabelFormat( false ,_T( "%m月%d日" ));
pAxis = m_Chart.CreateStandardAxis(CChartCtrl:: LeftAxis);
pAxis -> SetAutomatic( true );
double x[ 1000 ], y[ 1000 ];
COleDateTimeSpan cn=m_graphend-m_graphstart;
CString k=m_graphend.Format("%Y-%m-%d");
LONG s=cn.GetDays();
COleDateTime t1(m_graphstart);
COleDateTimeSpan tsp( 1 , 0 , 0 , 0 );
int listcount = m_list.GetItemCount();
for(int i=0; i <listcount; i++)
{
if(m_list.GetCheck(i)==TRUE)
{
CString num=m_list.GetItemText(i,0);
if (TRUE==m_radiod.GetCheck())
{
CString ch;
int count=m_list.GetItemCount();
for(int p=0;p<count;p++)
{
if(m_list.GetCheck(p)==TRUE)
{
ch=m_list.GetItemText(p,0);
CString date;
for (int i=0;i<s;i++)
{
date=t1.Format("%Y-%m-%d");
x[i] = t1.m_dt;
y[i] = get(num,date);//查询数据库获得数据
//y[i] = tan( float (i));
t1 += tsp;
}
}
}
CChartLineSerie * pLineSerie2;
m_Chart.RemoveAllSeries(); //先清空
pLineSerie2 = m_Chart.CreateLineSerie();
pLineSerie2 -> SetSeriesOrdering(poXOrdering); //设置为无序
pLineSerie2 -> AddPoints(x, y, s );
pLineSerie2 -> SetName(_T( "这是IDC_ChartCtrl2的第一条线" ));
}
}
}
}