VS中如何使用NI控件画图
Posted 十二月的风123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS中如何使用NI控件画图相关的知识,希望对你有一定的参考价值。
NI是美国一个公司的产品,注重二维、三维图形绘制。用于仿真。
其控件主要有两种类型(针对.NET):
一:
(1)COM组件
总共有8个组件,有二三维、Socket组件。为最底层的控件。需要在VS选择项里面手动添加(工具箱里右击一下)。NI控件有自己特有的标识。
(2)另外一种为对COM进行过封装、扩展而来的。数量多、功能强大、操作简单。有助于快速开发,共计25个。基本信息大概如此。
二:CWGraph的使用
(1)
1.打开VS,新建一个工程,在选择项中将NI的COM组件加载到工具箱。
2.拖一个CWGraph控件到窗体上
3.1.NI控件有着华丽的外表,那是因为他有一个强大的属性面板,通过这个属性面板我们可以配出各式各样的效果。在控件上右键->选择属性即可打开。如下图:
属性面板共计13个选项卡,每个选项卡控制不一样的功能,但个个选项卡之间又相互联系。
Style:
Axes主要是设置X、Y轴坐标位置;
Plots 主要是来设置绘图的方式、类型,有波形,柱行,还有混合模式(注意:要先选择样式,再去PLOT面板设置PLOT,否则当你辛苦弄好PLOT后,回头再这里,那么之前在plot里面所做的操作全都白费了)
Plots:plots主要包含了绘制的图层,所有的能绘制在控件上的图层都在这里面可控制;如下图
可以通过add、del 控制plot图层个数。
Name用来设置某个plot的名称,主要用来索引plot图层用。
Line 设置绘制线方向和颜色
Point 绘制的每个线都是根据某些数据点绘制的,在这里控制显示这些点的颜色和样式
Fill to base 填充颜色
Lines 为每个柱状之间挨着的连线颜色,勾选有连线,不勾选则没有
Y Axis 设置Y轴绑定信息,绑定一个即可
Uer in Multiplot 选择勾选是否可以实用多图层绘制
Cursor 选项卡
基本差不多 Crossshair 设置在控件上的鼠标样式和颜色
Snap Mode 鼠标的捕捉方式,里面提供了几种简单的方式,不过经常不实用,捕捉都自己写在MouseMove事件里面,不再多说。
Plot 设置cursor作用的图层。默认绑定的。
Axes 设置XY轴基本信息
默认里面包含两个默认的XY轴,
Auto Scale 就是控件可以自己师表并设置坐标的起始刻度大小。大多数时候刻度选择自己填写。
Log 即对某个轴坐标的起始刻度求log函数
Interval 用来对称XY轴
Ticks 设置xy轴显示颜色、标签、控件背景填充线颜色等
(Tick Mark)刻度
Below 控制某个轴下方的刻度显示
Above 控制某个刻度反方向的刻度显示
Insede 控制内部刻度显示
Major Minor 更小的刻度控制
这些刻度控制自己用一下就清楚。
(Lable ) 标签设置
(Grid Lines) 网格线的控制
Format 刻度显示的类型
包含很多种:数字、日期、时间等(不同种精度)
Grap 标签
Track 设置鼠标在控件上的作用方式;共计12种
如:PanXY 可以用鼠标拖拽XY坐标
常用的社会自 图层颜色、背景颜色、绘图颜色、绘图的历史、字体、标题、数据绑定
剩下的选项卡,很少用,不在介绍。
举个例子说明一下具体的使用方法、以及需要注意的问题。
Com类型的组件跟其他的使用有所不同,麻烦一些,因为太原始。
1:获取Plot图层、鼠标、坐标轴(同样的方式)
当在选项卡中添加了某个图层后,当需要用的时候是不能直接引用到的。需要通过先前设置的name来抓去图层的引用,用来操作。
声明一个:
private CWPlot Pplot = null;
Pplot = axCWGraph1.Plots.Item("Plot-1");
或者这样//Pplot = axCWGraph1.Plots.Item(1);
要么用NAME、要么用索引号(这里的索引从1开始,而不是0),大约猜想一下就知道这玩意年头很老了。
CWPlot 图层 CWCursor 鼠标 CWAxis 坐标轴 具体的类以及类的方法属性请参考对象浏览器
设置一些样式后,运行看一下。
什么都没有的,不过先前设置的样式已经看到了。
下面填充数据:
填充数据用到的方法:
axCWGraph1.PlotXvsY(Xdata,Ydata);
参数 xdata、ydata为连个1为数组
声明数组:
double[] Xdata = new double[100];
double[] Ydata = new double[100];
Random ran=new Random(80);
//初始化数据
for (int i = 0; i < 100; i++)
Xdata[i] = i
Ydata[i] = ran.NextDouble()*100; //为了逼真用一个随机数种子
最后将xdata ydata 填入就可以看到效果,运行、如下图,很简单吧。
至于要让图不停的动起来,那就需要不停的更新数据了。
设置一个timer定时器,定时刷新数据即可。
定义变量:
Timer PTimer = null;
在Tick时间里面不停的重新填充数据,.NET的随机数每次在new后的数值都是一样的,是一个伪随机数,所以要用最好在最外面new。
void PTimer_Tick(object sender, EventArgs e)
//初始化数据
for (int i = 0; i < 100; i++)
Xdata[i] = i;
Ydata[i] = ran.NextDouble() * 100;
axCWGraph1.PlotXvsY(Xdata, Ydata);
然后触发时间即可。运行,效果出现,很好看的。
在设置数据的时候,是直接设置在控件上的,控件是有一个默认的Plot 模版的。对控件设置的数据是绘制在这个模版上的。然而每个plot都是从模版来的。所以说是一个效果。
当然你也可以把数据防到某个你自己想要放的图层上面。
例如: 替换成plot 效果一样
//axCWGraph1.PlotXvsY(Xdata, Ydata);
Pplot.PlotXvsY(Xdata, Ydata);
先到这里,捕捉功能下次再说。
以上是关于VS中如何使用NI控件画图的主要内容,如果未能解决你的问题,请参考以下文章
Measurement Studio 2019入门(1)——控件初见
zedgraph控件画图时数据量大时会很密集,如何设置出滚动条让其可以左右拖动,这样就不会很密集