NI控件之 CWGraph使用(COM)

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);

先到這裏,捕捉功能下次再說。

發佈了26 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章