QQ登录

只需一步,快速开始

上位机MFC扩展编程图表显示标题图例数据的标志表格及标签

[ 复制链接 ]
前面帖子介绍一个图表有很多元素,例如数据系列,标题,数据表格,标签,数据标志等。
这些元件可以单独进行显示隐藏设置,也可以选择是否与图表区域重叠显示。
这个例程实现图表标题的显示,数据表格,标志,标签的显示隐藏操作。
界面如下:
2020-01-01_181853.jpg
点击界面上对应选择框,可以将每个图表元素显示出来或隐藏不显示。
图表可操作的元素有很多,这此仅实现部分元素的显示隐藏操作。
更多元素与XY轴,自定义区域,线段放在后面例程介绍。
例程首先手动添加消息WM_INITDIALOG的关联处理函数:
ON_MESSAGE(WM_INITDIALOG,OnInitDialog),
在此函数OnInitDialog内,实现图表与数据系列的添加:
  1. LRESULT CMy123View::OnInitDialog(WPARAM wParam, LPARAM lParam)
  2. {
  3.         LRESULT lRes = CBCGPFormView::HandleInitDialog (wParam, lParam);

  4.         m_wndChart.SubclassDlgItem(IDC_CHART,this);
  5.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();


  6.         CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("Series 1"));
  7.         pSeries1->SetCurveType (BCGPChartFormatSeries::CCT_SPLINE);

  8.         CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("Series 2"));
  9.         pSeries2->SetCurveType (BCGPChartFormatSeries::CCT_SPLINE_HERMITE);

  10.         pSeries1->AddDataPoint(0.);
  11.         pSeries1->AddDataPoint(2.);
  12.         pSeries1->AddDataPoint(5.);
  13.         pSeries1->AddDataPoint(3.);
  14.         pSeries1->AddDataPoint(3.5);
  15.         pSeries1->AddDataPoint(5.);
  16.         pSeries1->AddDataPoint(8.);
  17.         pSeries1->AddDataPoint(7.);

  18.         pSeries2->AddDataPoint(2.);
  19.         pSeries2->AddDataPoint(4.);
  20.         pSeries2->AddDataPoint(6.);
  21.         pSeries2->AddDataPoint(7.);
  22.         pSeries2->AddDataPoint(6.);
  23.         pSeries2->AddDataPoint(3.);
  24.         pSeries2->AddDataPoint(1.);
  25.         pSeries2->AddDataPoint(0.);

  26.         pChart->SetSeriesShadow(true);

  27.         if (GetLayout() != NULL)
  28.         {
  29.                 UpdateData(FALSE);
  30.                 CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout();
  31.                 if (pLayout != NULL)
  32.                 {
  33.                         pLayout->AddAnchor(m_wndChart.GetDlgCtrlID(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
  34.                 }
  35.         }
  36.         return lRes;
  37. }
复制代码
例程使用了界面布局管理器,将图表添加到了管理器内统一管理。
pLayout->AddAnchor(m_wndChart.GetDlgCtrlID(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
IDC_CHART为手动添加的图片控件ID,用于显示图表。
在界面上添加了众多的单选框按钮,可以双击每个控件,关联选择函数,在函数内都调用函数OnBnClickedButton1,
实现对不同图表元素的显示隐藏操作。
  1. void CMy123View::OnBnClickedButton1()
  2. {
  3.         BOOL bShowTitle = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
  4.         BOOL bTitleOverlap = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
  5.         BOOL bShowLegend = ((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
  6.         BOOL bLegendOverlap = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
  7.         BOOL bShowDataTable = ((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
  8.         BCGPChartFormatDataTable DataTableFormat;
  9.         DataTableFormat.m_bShowLegendKeys = ((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
  10.         DataTableFormat.m_bInterlaceRows = TRUE;
  11.         BOOL bShowDataMarkers = ((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck();
  12.         BOOL bShowDataLabels = ((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck();
  13.         //
  14.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
  15.         pChart->SetChartTitle(_T("图表标题"));
  16.         pChart->ShowChartTitle(bShowTitle,bTitleOverlap);
  17.         pChart->SetLegendPosition(bShowLegend?BCGPChartLayout::LP_RIGHT:BCGPChartLayout::LP_NONE,bLegendOverlap);
  18.         pChart->ShowDataTable(bShowDataTable,&DataTableFormat);
  19.         pChart->ShowDataMarkers(bShowDataMarkers);
  20.         pChart->ShowDataLabels(bShowDataLabels);
  21.         pChart->Redraw();
  22. }
复制代码
具体效果与细节可以下载例程源代码编译运行查看。
例程源代码:
游客,为过滤非法行为,全站隐藏资源仅对充值会员开放进入升级

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

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