| MFC扩展编程实例气泡图表大小形状标签设置 
 当前例程实现气泡图表的创建,设置气泡的大小,形状,标签的显示角度等功能。
 效果如下图:
 
 MFC扩展编程实例气泡图表大小形状标签设置   气泡图表的创建很简单,主要是要设置其数据标签的属性来更改外观。
 例程创建了一气泡图表,点击界面的按钮,可以同时设置气泡的大小,形状,与标签属性。
 
 下面是例程实现过程介绍。
 先创建基于MFC扩展库的单文档工程class CMy123View : public CBCGPFormView。
 在默认的对话框资源添加一图片控件,ID修改为IDC_CHART用于显示图表 。
 
 然后在视窗类中添加变量        CBCGPChartCtrl m_wndChart;
 以及虚函数Create,用于初始化图表。
 
 图表创建好后,就可以以默认设置的外观显示。复制代码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);        
        CBCGPInfoTipOptions infoTipOptions;
        infoTipOptions.m_StemLocation = CBCGPPopupWindow::BCGPPopupWindowStemLocation_Left;
        m_wndChart.EnableInfoTip(TRUE, &infoTipOptions);//显示提示文本;
        CBCGPChartVisualObject* pChart = m_wndChart.GetChart();//获取图表指针;
        pChart->SetChartType(BCGPChartBubble);//
        pChart->SetChartTitle(_T("气泡图表"));//设置图表标题;
        pChart->SetSeriesShadow(true);//数据系列显示阴影;
        pChart->ShowDataLabels(true, TRUE, FALSE, 45);//45Y度显示数据标签;
        //创建数据系列,添加数据;
        pChart->AddChartDataYXY1(_T("工控编程吧"), 3, 2, 6700);
        pChart->AddChartDataYXY1(_T("头条"), 4, 3, 5500);
        pChart->AddChartDataYXY1(_T("百度"), 5, 4, 3200);
        pChart->AddChartDataYXY1(_T("微信"), 6, 5, 2500);
        pChart->AddChartDataYXY1(_T("微博"), 5, 6, 1400);
        pChart->AddChartDataYXY1(_T("阿里"), 4, 7, 1350);
        pChart->AddChartDataYXY1(_T("其他"), 8, 7.5, 1700);
        //数据系列属性设置;
        CBCGPChartBubbleSeries* pBubbleSeries = DYNAMIC_DOWNCAST(CBCGPChartBubbleSeries, pChart->GetSeries(0));
        if (pBubbleSeries != NULL)
        {
                ASSERT_VALID(pBubbleSeries);
                pBubbleSeries->SetDataLabelContent(BCGPChartDataLabelOptions::LC_BUBBLE_SIZE);
                pBubbleSeries->SetMarkerShape(BCGPChartMarkerOptions::MS_CIRCLE);//数据标志点形状;
                pBubbleSeries->SetBubbleScale(100);//气泡大小;
                pBubbleSeries->SetDefaultFillGradientType( CBCGPBrush::BCGP_GRADIENT_RADIAL_TOP_LEFT);//渐变样式;
                pBubbleSeries->EnableAutoColorDataPoints();
                pBubbleSeries->m_bIncludeDataPointLabelsToLegend = TRUE;
                for (int i = 0; i < pBubbleSeries->GetDataPointCount(); i++)
                {
                        BCGPSeriesColorsPtr colors;
                        const BCGPChartFormatSeries* pFormatSeries = pBubbleSeries->GetColors(colors, i);
                        if (pFormatSeries != NULL)
                        {//设置气泡带渐变填充颜色;
                                BCGPChartFormatSeries* pFormat = (BCGPChartFormatSeries*)pBubbleSeries->GetDataPointFormat(i, TRUE);
                                pFormat->m_seriesElementFormat.m_brFillColor =
                                        CBCGPBrush(colors.m_pBrElementFillColor->GetColor(), CBCGPColor::White, CBCGPBrush::BCGP_GRADIENT_RADIAL_TOP_LEFT);
                        }
                }
        }
        //添加添加到布局管理器统一管理布局;
        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;
}
当然也可以添加一个按钮来设置图表的外观。
 
 例程使用到的MFC扩展库可以在网站搜索下载。复制代码void CMy123View::OnBnClickedButton1()
{
        static int nMarkerShape=0;
        static int nScale=1;
        static int nDataLabelAngle=0;
        CBCGPChartVisualObject* pChart = m_wndChart.GetChart();
        ASSERT_VALID(pChart);
        pChart->ShowDataLabels(TRUE, TRUE, FALSE, nDataLabelAngle*45);
        CBCGPChartBubbleSeries* pSeries = DYNAMIC_DOWNCAST(CBCGPChartBubbleSeries, pChart->GetSeries(0));
        if (pSeries != NULL)
        {
                ASSERT_VALID(pSeries);
                pSeries->ClearDataPointFormat();
                pSeries->SetMarkerShape((BCGPChartMarkerOptions::MarkerShape)nMarkerShape);
                pSeries->SetBubbleScale(nScale*30);
        }
        pChart->Redraw();
        //
        nMarkerShape++;
        nMarkerShape=nMarkerShape>3?0:nMarkerShape;
        nScale++;
        nScale = nScale>10?0:nScale;
        nDataLabelAngle++;
        nDataLabelAngle = nDataLabelAngle>8?0:nDataLabelAngle;
}
例程源代码下载地址:
 
 
   如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!    
 
   上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看 
 
 |