在VB中繪制實(shí)時(shí)曲線是比較難的,一般要應(yīng)用第三方控件或是Windows API函數(shù)來完成,但是如果你對(duì)實(shí)時(shí)曲線的要求不是很高,只要能表示出當(dāng)前的一般情況的話,我們可以直接應(yīng)用VB提供給我們的空間來完成。
原則上講,直接在Form里繪制曲線都是可以的,MSDN上面很多例程就是直接在Form里面繪制圖形的,F(xiàn)orm作為繪制圖形的容器,不過一般應(yīng)用中Form中不可避免的會(huì)有很多其他控件,所以我們選擇PictureBox作為繪制曲線的容器。
實(shí)時(shí)曲線的繪制一般借助于Timer控件來完成,使用Timer控件,定期將串口或是其他儀器中監(jiān)測到的送往PictureBox1,而曲線的繪制一般畫成折線圖,采用PictureBox1的Line方法繪制.具體實(shí)現(xiàn)如下:
1.選擇需要顯示的窗體Picture1,加入圖片框Picture1,根據(jù)實(shí)際需要設(shè)置圖片的大小并移到合適的位置,并在圖片的外面畫好量程時(shí)間坐標(biāo)系;然后加上Timer控件以及兩個(gè)CommandButton,界面就基本設(shè)置好了。
2.建立坐標(biāo)系,根據(jù)Picture1的大小和高度設(shè)置畫出坐標(biāo)系的X軸和Y軸:
Picture1.Refresh Picture1.CurrentX = Picture1.ScaleLeft +100 Picture1.CurrentY = Picture1.ScaleTop Picture1.Print Picture1.ScaleHeight100 Picture1.Line- Picture1.CurrentX = Picture1.ScaleLeft +100 Picture1.CurrentY = Picture1.ScaleHeight Picture1.Print Picture1.Line - Picture1.CurrentX = Picture1.ScaleWidth Picture1.CurrentY = Picture1.ScaleHeight Picture1.Print Picture1.ScaleWidth-100 Picture1.AutoRedraw = True 必要時(shí),用存儲(chǔ)在內(nèi)存中的圖象進(jìn)行重繪Picture1 .ScaleMode = 1 以VB的基本單位作為建立坐標(biāo)軸以及繪制圖形的單位;
3.繪制曲線并保存,我們這里以正弦曲線作為繪制曲線的,具體應(yīng)用是可以采用由串口或其他儀器采集得到的.首先我們繪制一條中線,然后在Timer控件的Time事件中繪制曲線:
Private Sub Timer1_Timer Dim y1 As Integer y1 = CInt / 20 / 180 * pi) * Picture1.ScaleHeight / 2) y1 = CInt / 2)y1 Picture1.Line - x = x + 20 y = y1 If x 保存圖畫,可以根據(jù)實(shí)際需要命名圖片 x = 0 y = Picture1.ScaleHeight / 2 Picture1.Cls 清屏重畫 End If End SubPicture1.Line )-) 繪制中線
聯(lián)系客服