QQ登录

只需一步,快速开始

MFC扩展编程实例叠加与折线面积图表创显示

[ 复制链接 ]
MFC扩展编程实例叠加与折线面积图表创显示

当前例程实现三个类型的面积 图表创建显示。
分别是普通面积图表,叠加面积图表,包含百分比叠加面积图表,还有折线面积图表。
例程界面如下。

MFC扩展编程实例叠加与折线面积图表创显示

MFC扩展编程实例叠加与折线面积图表创显示


界面界面有两个按钮,可发分别设置面积图表的类型,曲线的显示类型。
类型可以设置为叠加,带百分比叠加,普通两种,曲线类型可以设置为直线,曲线,折线三种。
折线类型设置就可以实现折线面积图表的创建。

下面是例程实现过程。
先创建单文档工程,class CMy123View : public CBCGPFormView。
内样也是在默认的对话框资源上添加一图片控件,修改ID为IDC_CHART,用于显示图表。

然后在视窗类中添加图表变量,CBCGPChartCtrl m_wndChart;
及虚函数Create,用于创建图表。
  1. inline double Rand (double dblStart, double dblFinish)
  2. {
  3.         double minVal = min(dblStart, dblFinish);
  4.         double maxVal = max(dblStart, dblFinish);
  5.         return (maxVal - minVal) * (double)rand() / (RAND_MAX + 1) + minVal;
  6. }
  7. BOOL CMy123View::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
  8. {
  9.         BOOL bRst = CBCGPFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);;
  10.         //图表初始化;
  11.         m_wndChart.SubclassDlgItem(IDC_CHART,this);       
  12.         CBCGPInfoTipOptions infoTipOptions;
  13.         infoTipOptions.m_StemLocation = CBCGPPopupWindow::BCGPPopupWindowStemLocation_Left;
  14.         m_wndChart.EnableInfoTip(TRUE, &infoTipOptions);//显示提示文本;
  15.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();//获取图表指针;
  16.         BCGPChartCategory style = BCGPChartArea;
  17.         BCGPChartType type = BCGP_CT_SIMPLE;
  18.         pChart->SetChartType(style, type);//设置图表类型;
  19.         pChart->SetChartTitle(_T("面积图表"));//设置图表标题;
  20.         pChart->SetSeriesShadow(true);//数据系列显示阴影;
  21.         pChart->SetCurveType(BCGPChartFormatSeries::CCT_LINE);//图表系列线条样式;
  22.         pChart->ShowDataMarkers(true, 5, BCGPChartMarkerOptions::MS_CIRCLE);//设置数据标志点属性;
  23.         pChart->ShowDataLabels(TRUE, TRUE, TRUE, 45);//设置数据标签属性;
  24.         pChart->SetThemeOpacity(70);//设置透明度;
  25.         //创建数据系列,添加数据;
  26.         CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("第一年"));
  27.         CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("第二年"));
  28.         CBCGPChartSeries* pSeries3 = pChart->CreateSeries(_T("第三年"));
  29. //
  30.         COleDateTime date;
  31.         CString sMonth;
  32.                 COleDateTime today = COleDateTime::GetCurrentTime();
  33.         double arTemp[] = { 5., 12., 19, 22, 19, 24, 22, 24, 18, 14, 10, 7 };
  34.         for (int nMonth = 1; nMonth <= 12; nMonth++)
  35.         {
  36.                 date.SetDateTime(today.GetYear(), nMonth, 1, 0, 0, 0);
  37.                 sMonth = date.Format(_T("%b"));
  38.                 pSeries1->AddDataPoint(sMonth, arTemp[nMonth - 1]);
  39.                 pSeries2->AddDataPoint((int)(arTemp[nMonth - 1] + Rand(-5, 5)));
  40.                 pSeries3->AddDataPoint((int)(arTemp[nMonth - 1] + Rand(-5, 5)));
  41.         }
  42.         //添加添加到布局管理器统一管理布局;
  43.         if (GetLayout() == NULL)
  44.                 return bRst;
  45.         CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout();
  46.         if (pLayout == NULL)
  47.                 return bRst;
  48.         pLayout->AddAnchor(m_wndChart.GetDlgCtrlID(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
  49.         //
  50.         return bRst;
  51. }
复制代码


最后添加设置图表类型与图表曲线类型的两按钮控件,来设置属性。
  1. void CMy123View::OnBnClickedButton1()
  2. {
  3.         static int nChartType=2;
  4.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();//获取图表指针;
  5.         pChart->ShowSeries(true,1);
  6.         pChart->ShowSeries(true,2);
  7.         pChart->SetCurveType(BCGPChartFormatSeries::CCT_LINE);
  8.         BCGPChartCategory style = BCGPChartArea;
  9.         //        BCGP_CT_DEFAULT, BCGP_CT_SIMPLE,//面积图表;
  10.         //  BCGP_CT_STACKED, BCGP_CT_100STACKED,//叠加,百分比叠加面积图表;
  11.         BCGPChartType type =(BCGPChartType)nChartType;
  12.         pChart->SetChartType(style, type);//设置图表类型;
  13.         pChart->Redraw();
  14.         //
  15.         nChartType++;
  16.         nChartType = nChartType>3?1:nChartType;
  17. }


  18. void CMy123View::OnBnClickedButton2()
  19. {
  20.         static int nCurveChoose=0;
  21.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();//获取图表指针;
  22.         if(nCurveChoose==1)
  23.         {
  24.                 pChart->ShowSeries(false,1);
  25.                 pChart->ShowSeries(false,2);
  26.         }
  27.         else
  28.         {
  29.                 pChart->ShowSeries(true,1);
  30.                 pChart->ShowSeries(true,2);
  31.         }
  32.         BCGPChartFormatSeries::ChartCurveType curve;
  33.         if(nCurveChoose==0)
  34.                 curve = BCGPChartFormatSeries::CCT_SPLINE;
  35.         else if(nCurveChoose==1)
  36.                 curve = BCGPChartFormatSeries::CCT_STEP;
  37.         else
  38.                 curve = BCGPChartFormatSeries::CCT_LINE;
  39.         pChart->SetCurveType(curve);
  40.         pChart->Redraw();
  41.         nCurveChoose++;
  42.         nCurveChoose = nCurveChoose>2?0:nCurveChoose;
  43. }
复制代码


例程是基于MFC扩展库实现,可以网站内搜索下载。
例程源代码下载地址:
游客,为过滤非法行为,全站隐藏资源仅对充值会员开放进入升级

  

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

  

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

  

QQ联系我

微信扫扫联系我

  

  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看



回复

使用道具 举报

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