源出处:http://www.codeproject.com/KB/miscctrl/ntgraph_activex.aspx
先看看NTGraph控件的运行效果吧,如下图。感觉效果挺不错的,主要是接口函数非常简单,只需要调用几个函数就能实现我们需要的功能,可谓功能强大了。
主要还是基于VC6环境,对开发上位机的朋友来说是个不错的工具。
首先注册控件。点击开始->运行,然后输入regsvr32 /u NTGraph.ocx
(
/u
是控件路径),点确定。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
接下来打开VC6,新建一个基于对话框的工程,工程名为CNTGraph_Test,将默认的控件删除,然后在对话框上点击右键,选择Insert ActiveX Control,如下图:
在打开的窗口中选择NTGraph Control(就是我们之前注册的控件),点OK。如下图:
控件已加载进来,如下图示:
接下来根据需要来修改一些属性,见下图,我只修改了frame(改变空间显示风格)、Show Grid(显示网格)两项,当然不修改属性或者在程序里修改都行。
接下来给控件添加一个对象,这个对象可以访问NTGraph类中的成员函数。
点击菜单栏上的view->ClassWizard->Member Variables,然后选择IDC_NTGRAPHCTRL,点击Add Variable给它添加一个变量m_Graph,这时会出现如下图对话框,点击确定就可以了。
经以上添加变量成功之后,控件会自动给我们添加3个类,如下图示。这三个类给我们提供了许多函数接口,只需要看函数名即可知道这些函数的功能了。
到此控件的添加和设置就完成了,接下来即可在程序里调用相关函数来实现我们想要的功能了。
将以下这些代码贴到OnInitDialog()函数里面就OK啦。
m_Graph.ClearGraph();
// The Element [0] is allocated by default
m_Graph.SetElementLineColor(RGB(125,255,0));
// Add the second graph element
m_Graph.AddElement();
m_Graph.SetElementLineColor(RGB(255,255,0));
m_Graph.SetElementIdentify(FALSE);
m_Graph.SetShowGrid(TRUE);
m_Graph.SetXGridNumber(20);//设置X轴等分点数,即网格宽度(注意和函数SetRange()的关系)
m_Graph.SetYGridNumber(20);//设置Y轴等分点数
m_Graph.SetCaption("超好用的图形控件");//设置标题
m_Graph.SetXLabel("X轴");//设置横轴名称
m_Graph.SetYLabel("Y轴");//设置纵轴名称
m_Graph.SetRange (0,100,-50,50);//设置横轴和纵轴的范围,前两位是横轴,后两位是纵轴
for(float x = 0;x<100;x+=0.1) //这是我自己写的代码,用于显示一个正弦波
{
m_Graph.PlotXY(x, 10*sin(x), 0);
}
for(int xx = 0;xx<1000;xx+=10) //这是我自己写的代码,用于显示一个三角波
{
if(xx/10%2)
m_Graph.PlotXY(xx, 20, 1);
else
m_Graph.PlotXY(xx, 40, 1);
}
然后编译,执行,运行效果图:
总结:一步一步的按照以上步骤来设置,即可完成一个简单的应用程序了,相对来说过程非常简单,只需初始化一次控件,然后在需要的地方调用GraphPlotXY()函数就可以实现图形的显示了。还可以在程序里动态的改变量程,只需调用SetRange()。
还有好多函数都没有用到,这里只是简单的演示了一个功能,具体的用法和扩展功能请参考上面列出的网页和作者的演示工程代码。
感谢这位老外作者提供的控件和源码。
--END--
用户377235 2016-6-1 16:34
最前面还要加上#include "math.h" 否则有错误
用户377235 2013-11-20 08:56
用户377235 2013-7-13 10:58