QQ登录

只需一步,快速开始

上位机MFC扩展编程图表自定义文本轴标记创建与显示

[ 复制链接 ]
上位机MFC扩展编程图表自定义文本轴标记创建与显示


图表上可以额外显示自定义的线段,颜色填充区域等图表对象,
这在前面两帖子编写例程实现过。
还可以再添加自定义的文本,轴标识文本。
后者较少用,当前这个例程实现向图表界面上添加两个自定义的文本。
文本在添加时可以额外实现背景文本颜色等属性的设置。
可以根据自己功能的需要来选择使用。
例程界面效果如下:

上位机MFC扩展编程图表自定义文本轴标记创建与显示

上位机MFC扩展编程图表自定义文本轴标记创建与显示

点击界面上对应的单选框可以显示或隐藏带背景颜色的两个文本。
点击清空,可以删除两个文本对象。
额外还会在Y轴上显示轴标记对象,这个功能可以选择性来使用。

图表文本对象是由类CBCGPChartTextObject来处理的。
查阅手册可知文本框,字体等全部属性都可以通过变量CBCGPChartObject::m_format来指定。
当然直接在构造函数中指定属性会来得方便些,例程就是直接在构造函数内指定属性。
构造函数原型:
  1. CBCGPChartTextObject::CBCGPChartTextObject  ( CBCGPChartVisualObject *  pParentChart,  
  2.   const CString &  strText,  
  3.   double  dblValX,  
  4.   double  dblValY,  
  5.   const CBCGPBrush &  brTextColor,  
  6.   const CBCGPBrush &  brFill,  
  7.   const CBCGPBrush &  brOutline,  
  8.   double  dblDistanceFromPoint = _EmptyCoordinate,  
  9.   double  dblAngle = _EmptyCoordinate,  
  10.   BOOL  bDrawConnector = FALSE  
  11. )
复制代码
参数:
pParentChartA pointer to a parent chart.
父类图表指针
strTextSpecifies the text.
文本内容
dblValXX value in Chart coordinates.
图表坐标中X值
dblValYY value in chart coordinates.
图表坐标中Y值
brTextColorText color.
文本颜色
brFillFill color.
填充颜色
brOutlineOutline color.
外框颜色
dblDistanceFromPointDistance of the center of text box from X,Y (specified by dblValX, dblValY). Can be empty.
文本框中心距X,Y的距离(由dblValX,dblValY指定)。可以是空的。
dblAngleAngle (in degrees) of the text box relative to Y axis.
文本框相对于Y轴的角度(以度为单位)。
bDrawConnectorTRUE - draw connector between text box and the point specified by dblValX, dblValY.
在文本框和dblValX、dblValY指定的点之间绘制连接线
例程中对应图表文件对象创建与显示函数如下:
  1. void CMy123View::UpdateChart()
  2. {
  3.         BOOL bShowTextObject1 = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
  4.         BOOL bShowTextObject2 = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
  5.         CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
  6.         if(NULL == m_pTextObject1)
  7.         {
  8.                 m_pTextObject1 = new CBCGPChartTextObject(pChart, _T("注意!\n危险临界点"), 0.6, 5.5, \
  9.                 CBCGPBrush(CBCGPColor::Yellow), CBCGPBrush(CBCGPColor::LightSkyBlue, CBCGPColor::White, CBCGPBrush::BCGP_GRADIENT_DIAGONAL_LEFT,0.5), CBCGPBrush(CBCGPColor::SteelBlue));
  10.                 pChart->AddChartObject(m_pTextObject1);
  11.                 //轴标识对象;
  12.                 pChart->AddChartAxisMarkObject(5.5,_T("5.5"),TRUE,TRUE,CBCGPBrush(CBCGPColor::Brown),CBCGPBrush(CBCGPColor::Red));
  13.         }
  14.         //
  15.         if(NULL == m_pTextObject2)
  16.         {
  17.                 m_pTextObject2 = new CBCGPChartTextObject(pChart, _T("Text Object 2"), 4, 3,
  18.                  CBCGPBrush(CBCGPColor::Brown), CBCGPBrush(CBCGPColor::LightYellow),  CBCGPBrush(CBCGPColor::Brown), 50, 135 /* Angle */, TRUE);
  19.                 pChart->AddChartObject(m_pTextObject2);
  20.         }
  21.         m_pTextObject2->SetVisible(bShowTextObject2);
  22.         m_pTextObject1->SetVisible(bShowTextObject1);
  23.         pChart->SetDirty(true,true);
  24. }
复制代码
函数中通过运算符new动态创建两个文本对象,并添加到图表中。
动态创建的对象通过两个全局对象指针保存,
        CBCGPChartTextObject* m_pTextObject1;
        CBCGPChartTextObject* m_pTextObject2;

以便后期继续操作,如果不需要保存创建的对象,可直接如轴标识对象一样,添加到图表中。
pChart->AddChartAxisMarkObject(5.5,_T("5.5"),TRUE,TRUE,CBCGPBrush(CBCGPColor::Brown),CBCGPBrush(CBCGPColor::Red));
单选框的点击函数都调用上面的函数就可以实现文本对象的创建,显示,隐藏。


清空单选框按钮可以删除前面创建的全部图表对象。
  1. void CMy123View::OnBnClickedCheck3()
  2. {
  3.         ((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(0);
  4.         ((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(0);
  5.         ((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(0);
  6.         //
  7.         m_wndChart.GetChart()->RemoveAllChartObjects();
  8.         //m_wndChart.GetChart()->RemoveChartObject(m_pTextObject1);//单独删除指定图表对象;
  9.         m_pTextObject1 = m_pTextObject2 = NULL;
  10.         m_wndChart.GetChart()->Redraw();
  11. }
复制代码
这样通过前面几个帖子,常用的图表对象创建,显示隐藏,删除就介绍完了。
例程用到的扩展库可以搜索BCGP下载使用。
例程源代码下载地址:
请点击此处下载

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

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

文件名称:图表自定义文本与轴标记创建与显示.rar 
文件大小:79.22 KB  售价:3金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

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

  

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

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

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