上位机MFC扩展编程图表自定义文本轴标记创建与显示
图表上可以额外显示自定义的线段,颜色填充区域等图表对象,
这在前面两帖子编写例程实现过。
还可以再添加自定义的文本,轴标识文本。
后者较少用,当前这个例程实现向图表界面上添加两个自定义的文本。
文本在添加时可以额外实现背景文本颜色等属性的设置。
可以根据自己功能的需要来选择使用。
例程界面效果如下:
上位机MFC扩展编程图表自定义文本轴标记创建与显示
点击界面上对应的单选框可以显示或隐藏带背景颜色的两个文本。
点击清空,可以删除两个文本对象。
额外还会在Y轴上显示轴标记对象,这个功能可以选择性来使用。
图表文本对象是由类CBCGPChartTextObject来处理的。
查阅手册可知文本框,字体等全部属性都可以通过变量CBCGPChartObject::m_format来指定。
当然直接在构造函数中指定属性会来得方便些,例程就是直接在构造函数内指定属性。
构造函数原型:
- CBCGPChartTextObject::CBCGPChartTextObject ( CBCGPChartVisualObject * pParentChart,
- const CString & strText,
- double dblValX,
- double dblValY,
- const CBCGPBrush & brTextColor,
- const CBCGPBrush & brFill,
- const CBCGPBrush & brOutline,
- double dblDistanceFromPoint = _EmptyCoordinate,
- double dblAngle = _EmptyCoordinate,
- BOOL bDrawConnector = FALSE
- )
复制代码 参数:
pParentChart | A pointer to a parent chart.
父类图表指针 | strText | Specifies the text.
文本内容 | dblValX | X value in Chart coordinates.
图表坐标中X值 | dblValY | Y value in chart coordinates.
图表坐标中Y值 | brTextColor | Text color.
文本颜色 | brFill | Fill color.
填充颜色 | brOutline | Outline color.
外框颜色 | dblDistanceFromPoint | Distance of the center of text box from X,Y (specified by dblValX, dblValY). Can be empty.
文本框中心距X,Y的距离(由dblValX,dblValY指定)。可以是空的。 | dblAngle | Angle (in degrees) of the text box relative to Y axis.
文本框相对于Y轴的角度(以度为单位)。 | bDrawConnector | TRUE - draw connector between text box and the point specified by dblValX, dblValY.
在文本框和dblValX、dblValY指定的点之间绘制连接线 | 例程中对应图表文件对象创建与显示函数如下:
- void CMy123View::UpdateChart()
- {
- BOOL bShowTextObject1 = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
- BOOL bShowTextObject2 = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
- CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
- if(NULL == m_pTextObject1)
- {
- m_pTextObject1 = new CBCGPChartTextObject(pChart, _T("注意!\n危险临界点"), 0.6, 5.5, \
- CBCGPBrush(CBCGPColor::Yellow), CBCGPBrush(CBCGPColor::LightSkyBlue, CBCGPColor::White, CBCGPBrush::BCGP_GRADIENT_DIAGONAL_LEFT,0.5), CBCGPBrush(CBCGPColor::SteelBlue));
- pChart->AddChartObject(m_pTextObject1);
- //轴标识对象;
- pChart->AddChartAxisMarkObject(5.5,_T("5.5"),TRUE,TRUE,CBCGPBrush(CBCGPColor::Brown),CBCGPBrush(CBCGPColor::Red));
- }
- //
- if(NULL == m_pTextObject2)
- {
- m_pTextObject2 = new CBCGPChartTextObject(pChart, _T("Text Object 2"), 4, 3,
- CBCGPBrush(CBCGPColor::Brown), CBCGPBrush(CBCGPColor::LightYellow), CBCGPBrush(CBCGPColor::Brown), 50, 135 /* Angle */, TRUE);
- pChart->AddChartObject(m_pTextObject2);
- }
- m_pTextObject2->SetVisible(bShowTextObject2);
- m_pTextObject1->SetVisible(bShowTextObject1);
- pChart->SetDirty(true,true);
- }
复制代码 函数中通过运算符new动态创建两个文本对象,并添加到图表中。
动态创建的对象通过两个全局对象指针保存,
CBCGPChartTextObject* m_pTextObject1;
CBCGPChartTextObject* m_pTextObject2;
以便后期继续操作,如果不需要保存创建的对象,可直接如轴标识对象一样,添加到图表中。
pChart->AddChartAxisMarkObject(5.5,_T("5.5"),TRUE,TRUE,CBCGPBrush(CBCGPColor::Brown),CBCGPBrush(CBCGPColor::Red));
单选框的点击函数都调用上面的函数就可以实现文本对象的创建,显示,隐藏。
清空单选框按钮可以删除前面创建的全部图表对象。
- void CMy123View::OnBnClickedCheck3()
- {
- ((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(0);
- ((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(0);
- ((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(0);
- //
- m_wndChart.GetChart()->RemoveAllChartObjects();
- //m_wndChart.GetChart()->RemoveChartObject(m_pTextObject1);//单独删除指定图表对象;
- m_pTextObject1 = m_pTextObject2 = NULL;
- m_wndChart.GetChart()->Redraw();
- }
复制代码 这样通过前面几个帖子,常用的图表对象创建,显示隐藏,删除就介绍完了。
例程用到的扩展库可以搜索BCGP下载使用。
例程源代码下载地址:
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|