VS2013 使用MsChart图表控件显示曲线波形图和数据波峰波谷标记
安装
MSCHART注册.exe
MSCHRT20.OCX
也可以手动注册
32位系统下:
1. 将放在windows/system32目录下。(注意,这个文件名中的没有字母a,即没有写chart中的字母a)
2.使用命令regsvr32 MSCHRT20.OCX来注册。
64位系统下:
1. 确保win7管理员权限
2. 把OCX控件,放到C:\Windows\SysWow64路径下面
3. 进入cmd,管理员权限运行
4. regsvr32 C:\Windows\SysWow64\MSCHRT20.OCX
注册成功会提示的。
在VS2013的对话框中的应用如下:
打开VS2013,新建一个MFC工程,点击VS中的“工具->选择工具箱->COM组件”,到Microsoft Chart Control,version 6.0(OLEDB)并勾选上。接下来,就可以在工具箱中看到该控件
首先建立一个基于对话框的工程文件,在对话框界面单击右键->插入Activex控件->Microsoft Chart Control,version 6.0(OLEDB)即可。
新建MFC工程
建立对话框应该程序
点击完成,右击插入ActiveX控件
列表中到Microsoft Chart Control 6.0(SP4) (OLEDB)控件
点确定按钮插入MsChart图表控件
在控件上右击添加变量
这时候并不能使用MsChart控件的所有功能,还需要添加控件的所有类,添加步骤如下,先打开类向导
点“…”到MSCHRT20.OCX文件
注意OCX控件32位系统在C:\ windows/system32目录下
64位系统在C:\Windows\SysWow64路径下面
注意左侧会列出控件的所有类,可选择添加
点击“>”逐个添加要用到的类,好像只能一个一个添加,最好全部添加
添加完成按确定会自动加载.h和.cpp文件到工程中,这时才可以使用控件的所有功能
下面是整理出来的一些主要功能
void CMyPD3000Dlg::Init_Mschart(CMschart1& m_chartt1)
{
m_chartt1.put_AllowSelections(FALSE); //是否可以选择图表对象
m_chartt1.put_AllowSeriesSelection(FALSE);//单击单个的图表数据点时是否可选定整个系列。
//栈模式,要放在前面
m_chartt1.put_Stacking(TRUE); //栈模式,要放在前面
//显示类型
m_chartt1.put_chartType(3);
//m_chartt1.put_SeriesType(3);
//m_chartt1.put_ColumnCount(1); //设置曲线条数
m_chartt1.put_ColumnCount(4); //设置曲线条数
//初始设置行
//m_chartt1.put_RowCount(64); //一条曲线有64个点
//m_chartt1.put_RowCount(Line_Points);//一条曲线有15个点
m_chartt1.put_RowCount(100);//一条曲线有100个点
//设置标题
/*
m_chartt1.put_TitleText(_T("按键1曲线"));//设置标题
CVcTitle vctitle;
vctitle = _Title();
vcFont = _VtFont();
vcColor = _VtColor();
vcColor.Set(0, 255, 0);//设置标题颜
vcFont.put_Size(20);//设置标题字体
*/
//设置标题
//改变背景颜
/*
CVcBackdrop vcbackdrop;
CVcFill vcfill;
vcbackdrop = _Backdrop();
vcfill = _Fill();
vcfill.put_Style(1);
CVcBrush vcbrush;
vcbrush = _Brush();
vcColor = _FillColor();
vcColor.Set(100, 100, 100);
//vcColor.Set(211, 223, 240);
*/
//改变背景颜
//显示图例
/*
m_chartt1.put_ShowLegend(TRUE);
m_chartt1.put_Column(1);
m_chartt1.put_ColumnLabel((LPCTSTR)_T("去值"));
m_chartt1.put_Column(2);
m_chartt1.put_ColumnLabel((LPCTSTR)_T("回值"));
*/
m_chartt1.put_ShowLegend(FALSE);
//显示图例
// 设置图例颜
//_Legend().get_VtFont().get_VtColor().Set(0, 255, 0);
//m_chartt1.put_Row(1);
//m_chartt1.put_RowLabel((LPCTSTR)(_T("12")));
//m_chartt1.put_Row(2);
//m_chartt1.put_RowLabel((LPCTSTR)(_T("24")));
/*for(int i = 1; i <= _RowCount(); i ++)
{
CVcDataGrid vcDataGrid = _DataGrid();
vcDataGrid.SetData(i,1,rand() % 200,0);
}*/
//m_chartt1.put_RowLabel((LPCTSTR)_T(""));
//for (UINT i = 1; i <= _RowCount(); i++)
//{
// CVcDataGrid vcDataGrid = _DataGrid();
// vcDataGrid.SetData(i, 1, 0, 0);
//}
CVcAxis vcaxis;
CVcFont vcFont;
CVcColor vcColor;
CVcPlot vcplot = m_chartt1.get_Plot();
//vcplot.put_UniformAxis(TRUE);
//X、Y轴名称
VARIANT var;
CVcAxisTitle vcAxistitle;
vcaxis = _Axis(0, var);//0为X轴,1为Y轴,2为第二Y轴
vcAxistitle = _AxisTitle();
//vcAxistitle.put_Text(_T("位移"));//X轴名称
vcAxistitle.put_Visible(FALSE);
vcaxis = _Axis(1, var);//0为X轴,1为Y轴,2为第二Y轴
vcAxistitle = _AxisTitle();
//vcAxistitle.put_Text(_T("荷重(N)"));//Y轴名称
vcAxistitle.put_Visible(FALSE);
//X、Y轴名称
CVcCategoryScale vccat;
CVcPen vcpen;
CVcValueScale vcvalue;
CVcLabels vclabels;
CVcLabel vclabel;
CVcAxis vcAxis;
//X轴
vcAxis = _Axis(0, var);//0为X轴,1为Y轴,2为第二Y轴
vcvalue = _ValueScale();
vccat = _CategoryScale();
vccat.put_Auto(FALSE);控件的使用
//vccat.put_DivisionsPerLabel(1);//设置X轴为1每1个刻度一个标注,2为每2个刻度一个标注
vccat.put_DivisionsPerTick(10);//设置X轴为每刻度一个刻度线
vcpen = _Pen();
vcColor = _VtColor();
vcColor.Set(0, 0, 0);//X轴基线颜
vclabels = _Labels();
vclabel = _Item(1);
vcFont = _VtFont();
vcColor = _VtColor();
//vcColor.Set(245, 245, 245);//X轴刻度数据值颜
//vcColor.Set(255, 255, 0);//X轴刻度数据值颜
//vcFont.put_Size(20);//设置标题字体
vcvalue.put_Auto(FALSE);//不自动标注X轴刻度
//vcvalue.put_Maximum(300);//X轴最大刻度
vcvalue.put_Maximum(100);//X轴最大刻度100,1.00mm
//vcvalue.put_Minimum(-100);//X轴最小刻度
vcvalue.put_Minimum(0);//X轴最小刻度
vcvalue.put_MajorDivision(10);//X轴刻度10等分,每100/10=10
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论