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);
先到這裏,捕捉功能下次再說。