VS中如何使用NI控件画图

Posted 十二月的风123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS中如何使用NI控件画图相关的知识,希望对你有一定的参考价值。

NI是美国一个公司的产品,注重二维、三维图形绘制。用于仿真。

其控件主要有两种类型(针对.NET):

一:

(1)COM组件

总共有8个组件,有二三维、Socket组件。为最底层的控件。需要在VS选择项里面手动添加(工具箱里右击一下)。NI控件有自己特有的标识。


(2)另外一种为对COM进行过封装、扩展而来的。数量多、功能强大、操作简单。有助于快速开发,共计25个。基本信息大概如此。

二:CWGraph的使用

1

1.打开VS,新建一个工程,在选择项中将NICOM组件加载到工具箱。

2.拖一个CWGraph控件到窗体上

3.1.NI控件有着华丽的外表,那是因为他有一个强大的属性面板,通过这个属性面板我们可以配出各式各样的效果。在控件上右键->选择属性即可打开。如下图:

属性面板共计13个选项卡,每个选项卡控制不一样的功能,但个个选项卡之间又相互联系。

Style

Axes主要是设置XY轴坐标位置;

Plots 主要是来设置绘图的方式、类型,有波形,柱行,还有混合模式(注意:要先选择样式,再去PLOT面板设置PLOT,否则当你辛苦弄好PLOT后,回头再这里,那么之前在plot里面所做的操作全都白费了)

Plotsplots主要包含了绘制的图层,所有的能绘制在控件上的图层都在这里面可控制;如下图

可以通过adddel 控制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);

参数 xdataydata为连个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控件画图的主要内容,如果未能解决你的问题,请参考以下文章

zedgraph 控件画图

Measurement Studio 2019入门(1)——控件初见

zedgraph控件画图时数据量大时会很密集,如何设置出滚动条让其可以左右拖动,这样就不会很密集

请问wpf中的GroupBox控件我想让他的Header位于右下角,注意是右下角,能实现吗?请详细说明,谢谢!

vs2017WPF控件属性在哪

NI Vision for LabVIEW 基础:NI Vision 简介