QQ登录

只需一步,快速开始

上位机MFC扩展编程图表XY轴名称网格间隔显示及反向显示

[ 复制链接 ]
上位机MFC扩展编程图表XY轴名称网格间隔显示及反向显示

XY轴也是图表编程时经常要处理的功能,
这个实例实现图表XY轴的显示,
XY轴名称,网格,间隔标识的显示,及反向显示功能。
效果如下图:
2020-01-01_222828.jpg
点击界面对应的单选框按钮,可以实现对应的功能,
每个名称具体指图表的哪个部位,可以运行例程查看效果,一目了然。
整体实现起来还是很简单方便的,主要是通过集成类CBCGPChartVisualObject的成员函数实现。
对应例程中实现的函数为:
  1. void CMy123View::UpdateChart()
  2. {
  3.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
  4.         //X轴,轴名称,轴间隔交错,轴网格线显示与反向显示;
  5.         BOOL bXShow = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
  6.         BOOL bXNameShow = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
  7.         BOOL bXIntervalInterlacingShow = ((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
  8.         BOOL bXGridLineShow = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
  9.         pChart->GetChartAxis(BCGP_CHART_X_PRIMARY_AXIS)->m_bReverseOrder=((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
  10.         pChart->ShowAxis(BCGP_CHART_X_PRIMARY_AXIS,bXShow);
  11.         pChart->SetAxisName(BCGP_CHART_X_PRIMARY_AXIS, _T("X轴"));
  12.         pChart->ShowAxisName(BCGP_CHART_X_PRIMARY_AXIS,bXNameShow);
  13.         pChart->ShowAxisIntervalInterlacing(BCGP_CHART_X_PRIMARY_AXIS,bXIntervalInterlacingShow);
  14.         pChart->ShowAxisGridLines(BCGP_CHART_X_PRIMARY_AXIS,bXGridLineShow);
  15.         //Y轴,轴名称,轴间隔交错,轴网格线显示与反向显示;
  16.         BOOL bYShow = ((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
  17.         BOOL bYNameShow = ((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck();
  18.         BOOL bYIntervalInterlacingShow = ((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck();
  19.         BOOL bYGridLineShow = ((CButton*)GetDlgItem(IDC_CHECK9))->GetCheck();
  20.         pChart->GetChartAxis(BCGP_CHART_Y_PRIMARY_AXIS)->m_bReverseOrder=((CButton*)GetDlgItem(IDC_CHECK10))->GetCheck();
  21.         pChart->ShowAxis(BCGP_CHART_Y_PRIMARY_AXIS,bYShow);
  22.         pChart->SetAxisName(BCGP_CHART_Y_PRIMARY_AXIS, _T("Y轴"));
  23.         pChart->ShowAxisName(BCGP_CHART_Y_PRIMARY_AXIS,bYNameShow);
  24.         pChart->ShowAxisIntervalInterlacing(BCGP_CHART_Y_PRIMARY_AXIS,bYIntervalInterlacingShow);
  25.         pChart->ShowAxisGridLines(BCGP_CHART_Y_PRIMARY_AXIS,bYGridLineShow);
  26.         //图表重绘,以上设置立即生效;
  27.         pChart->Redraw();
  28. }
复制代码
可以看到实现轴相关的显示隐藏主要函数有ShowAxis,SetAxisName,ShowAxisIntervalInterlacing,ShowAxisGridLines。
以及轴是否反向显示是通过对轴成员变量m_bReverseOrder的赋值。
每个单选按钮的选择函数只要调用上面的函数UpdateChart就可。

当前前提肯定得创建图表控件,添加一些数据用来演示。
例程是通过关联消息WM_INITDIALOG的处理函数实现图表初始化,
ON_MESSAGE(WM_INITDIALOG,OnInitDialog)。
  1. LRESULT CMy123View::OnInitDialog(WPARAM wParam, LPARAM lParam)
  2. {
  3.         LRESULT lRes = CBCGPFormView::HandleInitDialog (wParam, lParam);
  4.         //获取图表指针;
  5.         m_wndChart.SubclassDlgItem(IDC_CHART,this);
  6.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
  7.         //创建数据系列1
  8.         CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("Series 1"));
  9.         pSeries1->SetCurveType (BCGPChartFormatSeries::CCT_SPLINE);
  10.         //创建数据系列2
  11.         CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("Series 2"));
  12.         pSeries2->SetCurveType (BCGPChartFormatSeries::CCT_SPLINE_HERMITE);
  13.         //系列1添加数据
  14.         pSeries1->AddDataPoint(0.);
  15.         pSeries1->AddDataPoint(2.);
  16.         pSeries1->AddDataPoint(5.);
  17.         pSeries1->AddDataPoint(3.);
  18.         pSeries1->AddDataPoint(3.5);
  19.         pSeries1->AddDataPoint(5.);
  20.         pSeries1->AddDataPoint(8.);
  21.         pSeries1->AddDataPoint(7.);
  22.         //系列2添加数据
  23.         pSeries2->AddDataPoint(2.);
  24.         pSeries2->AddDataPoint(4.);
  25.         pSeries2->AddDataPoint(6.);
  26.         pSeries2->AddDataPoint(7.);
  27.         pSeries2->AddDataPoint(6.);
  28.         pSeries2->AddDataPoint(3.);
  29.         pSeries2->AddDataPoint(1.);
  30.         pSeries2->AddDataPoint(0.);
  31.         //数据系列显示阴影;
  32.         pChart->SetSeriesShadow(true);
  33.         //添加添加到布局管理器统一管理布局;
  34.         if (GetLayout() == NULL)
  35.                 return lRes;
  36.         CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout();
  37.         if (pLayout == NULL)
  38.                 return lRes;
  39.         pLayout->AddAnchor(m_wndChart.GetDlgCtrlID(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
  40.         return lRes;
  41. }
复制代码
具体可以下载例程编译,操作例程查看效果与细节。
MFC扩展库可事先本博客下载BCGP,进行环境搭建。
源代码下载地址:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC扩展编程图表XY轴名称网格间隔显示及反向显示.rar 
文件大小:79.98 KB  售价:3金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索