上位机MFC扩展编程实例图表数据表格自定义颜色文本网格样式等属性
在图表中数据还可以在指定表格中显示,这个数据表格的一些属性也是可以设置的。
这个例程实现数据表格各种元素颜色自定义,文本属性自定义,网格属性自定义,
水平,垂直,外部网格显示隐藏,表格中数据系列的显示隐藏以及图表提示信息显示等功能。
效果如下图:
界面上有几个单选框可以设置对应属性。
勾选显示系列2,系列3可以将图表中数据系列2,及隐藏的数据系列3的数据显示在表格上。
勾选自定义文本格式可以用自定义的文本格式来显示表格的文本。
勾选自定义颜色与网格样式可以使用自定义的颜色设置图表常用元素及设置表格网格线的样式。
勾选显示水平垂直外网格线可以将表格的水平线,垂直线与外部网格线显示出来。
勾选显示提示信息可以在鼠标移动于图表数据系列上时显示信息提示窗口。
表格的属性设置是通过类CBCGPInfoTipOptions成员变量的赋值实现。
还有其他不常用属性的设置可以参考其成员变量的名称解释。
下面是例程实现过程及关键代码。
首先创建基于CBCGPFormView的单文档工程,
class CMy123View : public CBCGPFormView。
并添加成员函数与变量,
CBCGPChartCtrl m_wndChart;
void UpdateChart();
- void CMy123View::UpdateChart()
- {
- CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
- ASSERT_VALID(pChart);
- BOOL bShowSerials1 = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
- BOOL bShowSerials2 = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
- BOOL bSetTextFormat = ((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
- BOOL bSetColorLineStyle = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
- BOOL bShowGridLine = ((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
- BOOL bShowTips = ((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
- //
- //开启信息提示窗口;
- CBCGPInfoTipOptions infoTipOptions;
- infoTipOptions.m_StemLocation = CBCGPPopupWindow::BCGPPopupWindowStemLocation_BottomLeft;
- m_wndChart.EnableInfoTip(bShowTips, &infoTipOptions);
- //显示指定系列;
- pChart->GetSeries(1)->m_bIncludeSeriesToDataTable = bShowSerials1;
- pChart->GetSeries(2)->m_bIncludeInvisibleSeriesToDataTable = bShowSerials2;
- BCGPChartFormatDataTable formatDataTable;
- formatDataTable.m_bShowLegendKeys = true;//显示数据图表标志;
- formatDataTable.m_bInterlaceRows = false;//不显示列交错;
- formatDataTable.m_bRoundValues = false;//表格数据不取整;
- if (bSetTextFormat)//设置文本相关属性;
- {
- formatDataTable.m_labelFormat.m_textFormat.SetFontSize(18.0);
- formatDataTable.m_labelFormat.m_textFormat.SetFontStyle(CBCGPTextFormat::BCGP_FONT_STYLE_ITALIC);
- formatDataTable.SetContentPadding(CBCGPSize(5.0, 5.0));
- }
- if (bSetColorLineStyle)//设置颜色与网格线相关属性;
- {
- formatDataTable.m_labelFormat.m_brTextColor.SetColor(CBCGPColor::DodgerBlue);
- formatDataTable.m_brFill.SetColors(CBCGPColor::Bisque, CBCGPColor::Cornsilk, CBCGPBrush::BCGP_GRADIENT_PIPE_VERTICAL);
- formatDataTable.m_brInterlaceFill.SetColors(CBCGPColor::Lavender, CBCGPColor::AliceBlue, CBCGPBrush::BCGP_GRADIENT_PIPE_VERTICAL);
- formatDataTable.m_horizontalGridLinesFormat.m_brLineColor.SetColor(CBCGPColor::DodgerBlue);
- formatDataTable.m_horizontalGridLinesFormat.m_strokeStyle.SetDashStyle(CBCGPStrokeStyle::BCGP_DASH_STYLE_DASH);
- formatDataTable.m_verticalGridLinesFormat.m_brLineColor.SetColor(CBCGPColor::LightSalmon);
- formatDataTable.m_outlineFormat.m_brLineColor.SetColor(CBCGPColor::DodgerBlue);
- formatDataTable.m_outlineFormat.m_strokeStyle.SetDashStyle(CBCGPStrokeStyle::BCGP_DASH_STYLE_DOT);
- }
- //显示水平,垂直,外网格线;
- formatDataTable.m_bDrawOutline = bShowGridLine;
- formatDataTable.m_bDrawVerticalGridLines = bShowGridLine;
- formatDataTable.m_bDrawHorizontalGridLines = bShowGridLine;
- //设置生效;
- pChart->ShowDataTable(TRUE, &formatDataTable);
- pChart->SetDirty(TRUE, TRUE);
- }
复制代码
然后在视窗类中添加虚函数Create,初始化图表控件。
并在视窗类构造函数中调用EnableLayout()开启布局管理器。
- BOOL CMy123View::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
- {
- BOOL bRst = CBCGPFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);;
- //获取图表指针;
- m_wndChart.SubclassDlgItem(IDC_CHART,this);
- CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
- //初始化系列1;
- CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("系列2"), CBCGPColor(), BCGP_CT_DEFAULT, BCGPChartColumn);
- pSeries1->AddDataPoint(0.752345);
- pSeries1->AddDataPoint(2.16354);
- pSeries1->AddDataPoint(5.673343);
- pSeries1->AddDataPoint(3.456434);
- pSeries1->AddDataPoint(3.58756);
- pSeries1->AddDataPoint(5.013636);
- pSeries1->AddDataPoint(8.345545);
- pSeries1->AddDataPoint(6.34233);
- pSeries1->AddDataPoint(4.897554);
- pSeries1->AddDataPoint(7.897466);
- pSeries1->AddDataPoint(9.343565);
- //初始化图表系列2;
- CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("系列3"));
- pSeries2->SetCurveType (BCGPChartFormatSeries::CCT_SPLINE_HERMITE);
- pSeries2->AddDataPoint(2.);
- pSeries2->AddDataPoint(4.);
- pSeries2->AddDataPoint(6.);
- pSeries2->AddDataPoint(7.);
- pSeries2->AddDataPoint(6.);
- pSeries2->AddDataPoint(3.);
- pSeries2->AddDataPoint(1.);
- pSeries2->AddDataPoint(0.);
- //初始化图表系列3;
- CBCGPChartSeries* pSeries3 = pChart->CreateSeries(_T("系列3 (隐藏)"));
- pSeries3->m_bVisible = FALSE;
- pSeries3->AddDataPoint(4.);
- pSeries3->AddDataPoint(1.);
- pSeries3->AddDataPoint(3.);
- pSeries3->AddDataPoint(6.);
- pSeries3->AddDataPoint(.5);
- pSeries3->AddDataPoint(8.);
- pSeries3->AddDataPoint(4.);
- pSeries3->AddDataPoint(2.);
- pSeries3->AddDataPoint(3.8);
- pSeries3->AddDataPoint(4.2);
- pChart->SetSeriesShadow();//显示图表数据系列的阴影;
- pChart->ShowDataMarkers();//显示图表数据标识点;
- UpdateChart();//更新图表属性;
- //添加添加到布局管理器统一管理布局;
- if (GetLayout() == NULL)
- return bRst;
- CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout();
- if (pLayout == NULL)
- return bRst;
- pLayout->AddAnchor(m_wndChart.GetDlgCtrlID(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
- //
- return bRst;
- }
复制代码
接头就是在资源理器对话框资源中如界面所示,添加图片控件IDC_CHART,
与一些单选框控件,关联单选选框控件点击函数调用UpdateChart();
最终实现通过几个单选框按钮来设置图表中数据表格属性功能。
例程中使用到的库可以搜索BCGP下载使用。
例程源代码下载:
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|