第一步:把MSCHRT20.OCX(下載)和msdatasrc.dll(搜索下系統裏有)放在一起,比如D盤根目錄下,執行註冊控件“regsvr32 D:/MSCHRT20.OCX”。
第二步:成功後,在VC++下“工程->增加到工程->Components and Controls”,打開了文件通用對話框,選擇“Registered ActiveX Controls->Microsoft Chart Control, version 6.0 (OLEDB)”,控件插入後就可以開始使用了。
第三步:代碼示例
1、先給控件賦予變量m_Chart
2、加入頭文件(可以繼續加,少什麼加什麼)
#include "mschart.h "
#include "vcplot.h "
#include "vcseriescollection.h "
#include "vcseries.h "
#include "vcdatapoints.h "
#include "vcdatapoint.h "
#include "vcdatapointlabel.h "
#include "vcfont.h "
#include "vcaxis.h "
#include "VcValueScale.h"
#include "VcBackdrop.h"
#include "VcFill.h"
#include "VcBrush.h"
#include "VcColor.h"
#include "VcPen.h"
#include "VcCategoryScale.h"
#include "VcAxisTitle.h"
#include "VcDataGrid.h"
3、初始化圖表:
m_Chart.GetPlot().GetAxis(1,chart_var).GetValueScale().SetMajorDivision(100);//y軸刻度10等分
m_Chart.GetPlot().GetAxis(1,chart_var).GetValueScale().SetMinorDivision(0.1);//每刻度一個刻度線
m_Chart.SetColumnCount(2); //2個項,2條曲線
m_Chart.SetTitleText("用戶消費情況折線圖統計");//設置標題欄
m_Chart.SetColumnLabel("本地話費");//設置第j列標籤
m_Chart.SetColumn(2);
m_Chart.SetColumnLabel("長途話費");
m_Chart.GetPlot().GetAxis(0,chart_var).GetAxisTitle().SetText("消費日期"); //X軸名稱
m_Chart.SetShowLegend(TRUE);
m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().GetVtColor().Set(0, 0, 255);//線色,藍色曲線
m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(1);//線寬
m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().GetVtColor().Set(255, 0, 0);//紅色
m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWidth(1);//線寬
m_Chart.GetBackdrop().GetFill().SetStyle(1);
m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);//白色背景
//初始化曲線值
for(int beginrow=1; beginrow<=5; ++beginrow){
m_Chart.GetDataGrid().SetData(beginrow, 1, 0, 0);//設置第一條曲線的第row個點
m_Chart.GetDataGrid().SetData(beginrow, 2, 0, 0);//設置第二條曲線的第row個點
}
4、開始畫圖:
int items = m_list_cost.GetItemCount();
m_Chart.SetRowCount(items);
for (int j=0; j<items; j++) //畫圖
{
m_Chart.GetDataGrid().SetData(j+1, 1, data_local[j], 0);//設置第一條曲線的第j+1個點
m_Chart.GetDataGrid().SetData(j+1, 2, data_long[j], 0);//設置第一條曲線的第j+1個點
m_Chart.SetRow(j+1);
m_Chart.SetRowLabel(data_time[j]);//設置第i行標籤
}
m_Chart.Refresh();
其中data_local和data_long爲兩條曲線採樣點的整數值。datatime爲字符串數組。