MFC之图像绘制---高速绘图控件(High-speed Charting Control)应用(二)

High-speed Charting Control静态绘图

在写之前必须推荐一篇文章,我也是跟着这位大佬学习的,点击这里进去查看

一、建立坐标轴

  • ChartCtrl一共有3种坐标,分别是数值型(CChartStandardAxis)、时间型(CChartDateTimeAxis)和对数型(CChartlogarithmicAxis),它们都继承于CChartAxis。
  • 建立坐标系的处理放在dialog的初始化函数OnInitDialog中完成,本文选择了数值型和时间型分别作Y轴和X轴,代码如下:
	//纵坐标为数值坐标
	CChartAxis *pAxis = NULL;
	pAxis = m_ChartCtrl1.CreateStandardAxis(CChartCtrl::LeftAxis);
	pAxis->SetAutomatic(true);
	//横坐标为时间坐标
	CChartDateTimeAxis* pDateAxis = NULL;
	pDateAxis = m_ChartCtrl1.CreateDateTimeAxis(CChartCtrl::BottomAxis);
	pDateAxis->SetTickLabelFormat(false, _T("%m月%d日"));
	pDateAxis->SetAutomatic(true);

	TChartString str1;
	str1 = _T("IDC_ChartCtrl1 - m_ChartCtrl1");
	m_ChartCtrl1.GetTitle()->AddString(str1);
	//纵坐标轴命名
	CChartAxisLabel* pLabel = NULL;
	str1 = _T("数值坐标轴");
	pAxis = NULL;
	m_ChartCtrl1.GetLeftAxis()->GetLabel()->SetText(str1);
	//横坐标轴命名
	str1 = _T("时间坐标轴");
	m_ChartCtrl1.GetBottomAxis()->GetLabel()->SetText(str1);

二、添加标题

  • 添加标题之前,要做一定的宏定义,因为MFC中字符串基于C语言CString,而高速绘图控件的字符串基于STL中的string,所以为了在使用中unicode能对应,所以做一下宏定义。
#include<string>
#include <sstream>
 
#if defined _UNICODE ||defined UNICODE
    typedef std::wstring TChartString;
    typedef std::wstringstream TChartStringStream;
#else
    typedef std::string TChartString;
    typedef std::stringstream TChartStringStream;
#endif
  • 在dialog的初始化函数OnInitDialog中添加标题代码如下:
	TChartString str1;
	str1 = _T("IDC_ChartCtrl1 - m_ChartCtrl1");
	m_ChartCtrl1.GetTitle()->AddString(str1);

三、绘制线图

  • 绘图主要是要调用AddPoints函数,我们给定两个数组,函数就会按照数组对应的点绘制图像,在dialog的初始化函数OnInitDialog中添加如下代码:
	m_ChartCtrl1.EnableRefresh(false);
	double x[10] = { 0,1,2,3,4,5,6,7,8,9 }, y[10] = { 2,3,2,5,4,6,9,8,7,5 };

	CChartLineSerie *pLineSerie1;
	m_ChartCtrl1.RemoveAllSeries();//先清空
	pLineSerie1 = m_ChartCtrl1.CreateLineSerie();
	pLineSerie1->SetSeriesOrdering(poNoOrdering);//设置为无序

	pLineSerie1->AddPoints(x, y, 10);
	pLineSerie1->SetName(_T("这是IDC_ChartCtrl1的第一条线"));//SetName的作用将在后面讲到
	m_ChartCtrl1.EnableRefresh(true);
  • 绘制结果如下图:
发布了84 篇原创文章 · 获赞 63 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/103168175
今日推荐