首先聲明:
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);
}