MSCHRT20.OCX使用详解

来源:互联网 发布:与朋友交而不信乎的信 编辑:程序博客网 时间:2024/05/21 09:19

第一步:把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为字符串数组。

原创粉丝点击