high-speed Charting Control使用介绍(新手向)(综合整合)(ChartCtrl)-2020.12.16

本文主要介绍常用的Charting Ctrl+MFC个人使用心得和部分方法技巧

1.本人使用vs2019编写MFC,具体配置方法见博客链接
https://blog.csdn.net/qq_36076137/article/details/111032383
本人source文件地址
https://download.csdn.net/download/qq_36076137/13633027
2.图表标题。最常见的一种方法是
m_m_chartctrl0.GetTitle()->AddString(_T(“标题”));
但是,如果词条命令执行多次,会在标题下面再加上一次标题,所以建议不要多次使用或者加入循环
3.普通数字坐标轴
CChartAxis* pAxis = NULL;
pAxis = m_chartctrl0.CreateStandardAxis(CChartCtrl::LeftAxis);//y轴
pAxis = m_chartctrl0.CreateStandardAxis(CChartCtrl::BottomAxis);//x轴
创建标准坐标轴,但还没加入坐标系和点。
4.时间坐标轴
时间坐标轴如果不赋值,是从默认日期开始计算,下面介绍一种以今天和一个月以前的今天为x轴的时间轴的创建方法,其他需求可在此基础上更改。

	CChartDateTimeAxis* pDateAxis = NULL;//创建一个时间轴
	COleDateTime datetime0, datetime1;//x轴起始坐标,datatime0为一个月前今天,datatime1为今天
	datetime1 = COleDateTime::GetCurrentTime();//COle时间
	//COle时间,ColeDateTimeSpan(day,hour,minute,second)表示做加减的时间差
	datetime0 = datetime1 - COleDateTimeSpan(30, 0, 0, 0);
	pDateAxis = m_chartctrl0.CreateDateTimeAxis(CChartCtrl::BottomAxis);//时间轴保存到x轴
	//x轴取值范围
	pDateAxis->SetMinMax(CChartCtrl::DateToValue(datetime0), CChartCtrl::DateToValue(datetime1));
	pDateAxis->SetTickIncrement(false, CChartDateTimeAxis::tiDay, 1);//x轴坐标间隔设置为1天
	pDateAxis->SetTickLabelFormat(false, _T("%m.%d"));//设置坐标轴为中文,格式为月.天
	//未完待续

5.坐标轴标签。主要显示x轴y轴代表什么变量
m_chartctrl0.GetBottomAxis()->GetLabel()->SetText(_T(“x轴标签”));
m_chartctrl0.GetLeftAxis()->GetLabel()->SetText(_T(“y轴标签”));
6.画线。一般通过添加离散点的方式画图,通常关闭刷新在加点。最简单的一种方法如下。

//以上例子x轴为时间轴继续编写
	m_chartctrl0.EnableRefresh(false);//关闭刷新,准备加点
	double x[30];//x轴点坐标,30天
	for (int i = 0; i < 30; i++)//赋值,x的值为一个月前的今天到今天
	 {
		x[i] = CChartCtrl::DateToValue(datetime0) + i * COleDateTimeSpan(1, 0, 0, 0);
	}
	double y[30]={0}};//以全为0为例子
	CChartLineSerie* plineserie1;//第一条曲线
	m_chartctrl0.RemoveAllSeries();//先清空已有的曲线
	plineserie1 = m_chartctrl0.CreateLineSerie();
	plineserie1->SetSeriesOrdering(poNoOrdering);//曲线设置为无序
	plineserie1->AddPoints(x, y, 30);//添加坐标点,30表示在x,y中取前30个点
	plineserie1->SetColor(RGB(0, 0, 255));//颜色设为蓝色
	plineserie1->SetName(_T("曲线名"));//设置曲线名
	m_chartctrl0.GetLegend()->SetVisible(true);//设置曲线名可见,不加这一句不显示曲线名
	m_chartctrl0.EnableRefresh(true);	//开启刷新

注意事项
1.建议画曲线函数写入OnInitDialog中或者用button控制。
2.很多情况下要在另一个窗口中显示曲线,需要打开窗口就显示曲线。给大家一个方法,在dlg2中,右键->类向导->虚函数->添加OnInitDialog函数,已解决dlg2中没有OnInitDialog的问题。
3.任何标题曲线颜色都可以设置,一般会有SetColor函数,可以使用RGB来表示,例如
plineserie1->SetColor(RGB(0, 0, 255));//颜色设为蓝色
4.曲线名只有在设置曲线名可见后才显示。
m_chartctrl0.GetLegend()->SetVisible(true);
5.可以添加多条曲线,即xy一条曲线,xz一条曲线,需要设置两条plineserie。

有问题可以留言或者私聊,看到就回复了。

猜你喜欢

转载自blog.csdn.net/qq_36076137/article/details/111252360
今日推荐