创建XTP图表的方法

来源:互联网 发布:希腊神话和传说知乎 编辑:程序博客网 时间:2024/04/28 08:51

首先声明:

CXTPChartControl   m_chartControl;

然后创建:

m_chartControl.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, IDR_TEST_CONTROL);

再创建一个chartContent对象:

CXTPChartContent *pContent = new CXTPChartContent;

m_chartContent.SetContent(pContent);

再添加曲线:

CXTPChartSeriesCollection* pCollection = pContent->GetSeries();

pCollection.RemoveAll();

if(pCollection)

{

    for(int s=0;s<2;s++)//此处是加入两条曲线

    {

        CXTPChartSeries* pSeries = pCollection->Add(new CXTPChartSeries());

        if(pSeries)

        {

            pSeries->GetPoints()->Add(new CXTPChartSeriesPoint(1, 2));

           // 加入多个点

           // …………

        }

    }

}

设置表格:

    CXTPChartDiagram2D* pDiagram = DYNAMIC_DOWNCAST(CXTPChartDiagram2D, pCollection->GetAt(0)->GetDiagram());
    ASSERT (pDiagram);

    pDiagram->SetAllowZoom(TRUE);


    pDiagram->GetAxisY()->GetRange()->SetMaxValue(100.1);
    pDiagram->GetAxisY()->GetRange()->SetAutoRange(FALSE);
    pDiagram->GetAxisY()->SetAllowZoom(FALSE);

    pDiagram->GetAxisX()->GetRange()->SetMaxValue(100.1);
    pDiagram->GetAxisX()->GetRange()->SetAutoRange(FALSE);
    pDiagram->GetAxisX()->GetRange()->SetZoomLimit(10);

    pDiagram->GetAxisX()->SetInterlaced(FALSE);
    pDiagram->GetAxisY()->SetInterlaced(FALSE);    

    pDiagram->GetPane()->GetFillStyle()->SetFillMode(xtpChartFillSolid);

最后更新一下控件:

   m_chartControl.UpdateWindow(TRUE);


除了上述步骤外,为了动态控制控件的大小,可以添加WM_ON_SIZE()消息映射,在OnSize()函数中加入以下代码:

    CView::OnSize(nType, cx, cy);
    CXTPWindowRect rcChart(this);
    ScreenToClient(&rcChart);
    if (m_chartControl.GetSafeHwnd())
    {
        m_chartControl.SetWindowPos(NULL, rcChart.left, rcChart.top, rcChart.Width(), rcChart.Height(), SWP_NOZORDER);
    }

原创粉丝点击