VB中實(shí)時(shí)曲線的繪制_第1頁
VB中實(shí)時(shí)曲線的繪制_第2頁
VB中實(shí)時(shí)曲線的繪制_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、vb 中實(shí)時(shí)曲線的繪制在工控制軟件中,實(shí)時(shí)曲線的繪制用途非常的廣泛,它可以很直觀的顯示出監(jiān)控?cái)?shù)據(jù)的變化值和變化趨勢。在 vb 中實(shí)現(xiàn)曲線的繪制有很多種方法,本文介紹一種非常簡單的方法來實(shí)現(xiàn)實(shí)時(shí)曲線的繪制。在 vb 中實(shí)現(xiàn)實(shí)時(shí)曲線的繪制,要利用 vb 的 picturebox(圖像)控件,和畫線函數(shù)line(x1,y1)-(x2,y2)。picturebox 控件,可以作為一個(gè) “ 容器” , 在它的里面可以包含很多的對象。也可以執(zhí)行很多vb 的內(nèi)部函數(shù)。要實(shí)現(xiàn)實(shí)時(shí)曲線的繪制,肯定要有外部實(shí)時(shí)數(shù)據(jù)的輸入,這里假設(shè)是有一個(gè)數(shù)據(jù)從計(jì)算機(jī)的串口輸入定義該數(shù)據(jù)變量為datafromcom 。實(shí)時(shí)曲線反映

2、的就是該數(shù)據(jù)。打開 vb6.0 中文版,新建一個(gè)項(xiàng)目和窗體,修改窗體的屬性,將“heigh”修改為: 8000, “width”修改為在窗體中放如一個(gè)picturebox控件。然后重新定義picturebox控件的一些基本屬性,在vb 中選中picturebox 控件,直接在它的屬性框中,修改一些屬性參數(shù)。“ 名稱 ” 改為 pic。 “ autoredraw ” 改為:true?!?backcolor”改為: &h00004000&(墨綠色背景顏色) ?!?heigh ”改為: 5000?!?width ”改為: 8000 。然后要重新定義picturebox 控件的坐標(biāo)系。

3、圖像框的默認(rèn)坐標(biāo)系,是從左上角開始的,不符合我們的畫線要求。修改坐標(biāo)系的目的是讓曲線從圖像框的左邊正中間,開始畫線。修改圖像框的坐標(biāo)系,這里定義一個(gè)過程picscale(), 代碼如下:private sub picscale(picx as picturebox) picx.scale (0, picx.scaleheight)-(picx.scalewidth, -picx.scaleheight) end sub 一般的實(shí)時(shí)曲線顯示的時(shí)候在屏幕的正中間有一條基準(zhǔn)線,這里也要畫出這條基準(zhǔn)線,用一個(gè)過程picmidleline() 來實(shí)現(xiàn) ,代碼如下:private sub picmidle

4、line( picx as picturebox) picx.line (0, 0)-(picx.scalewidth, 0), vbgreen 畫出中線end sub 要畫一條實(shí)時(shí)曲線,坐標(biāo)軸的設(shè)定很重要,在這里把x 軸設(shè)定為時(shí)間軸,y 軸設(shè)定為數(shù)據(jù)軸。對應(yīng)x軸我們定義一個(gè)時(shí)間變量timecount,timecount會隨著時(shí)間逐漸遞增,每次遞增,對應(yīng)著一個(gè)從串口讀過來的數(shù)據(jù) datafromcom ,這樣圖像框中的(x,y)坐標(biāo)點(diǎn)實(shí)際上就對應(yīng)著(timecount,datafromcom)如果只是當(dāng) timecount發(fā)生變化時(shí)就在圖像框上畫一個(gè)點(diǎn),就只需調(diào)用vb 中的畫像素的函數(shù)poin

5、t(x,y) ,這里 x,y 為所畫的點(diǎn)的坐標(biāo)。單這樣畫出來的是一個(gè)個(gè)不連續(xù)的點(diǎn)。我們想要的是實(shí)時(shí)的連續(xù)的曲線,所以要調(diào)用 vb 中的畫線的函數(shù)line(x1,y1)-(x2,y2),這里( x1,y1 )(x2,y2) 為所要畫的線的起點(diǎn)和終點(diǎn)的坐標(biāo)。只要把上次串口讀過來的數(shù)據(jù)(這里把它定義為變量datafromcomlast )和現(xiàn)在串口讀過來的數(shù)據(jù)(datafromcom) 和 timecount相對應(yīng), 調(diào)用 line(x1,y1)-(x2,y2)函數(shù)就可以在圖像框中畫出實(shí)時(shí)的曲線了。把它寫成一個(gè)過程如下面的代碼:private sub drawrealline(picx as pic

6、turebox, timecountx as integer, datafromcomx as integer, datafromcomlastx as integer) if timecountx - 1 0 then picx.line (timecountx - 1, datafromcomlastx)-(timecountx, datafromcomx), vbwhite end if end sub 有了三個(gè)過程就可以在圖像框中畫出一條實(shí)時(shí)的曲線了。drawrealline()過 程 中 的picx.line (timecountx - 1, datafromcomlastx)-(t

7、imecountx, datafromcomx), vbwhite所畫線的起始點(diǎn)和結(jié)束點(diǎn)都是以像素為單位的,這樣以來如果不改變的話,畫出來的線將是一個(gè)屏幕上像素相連的很密的曲線,通過調(diào)整line(x1,y1)-(x2,y2) 中的 x 的值,就可以畫出分布密度不一樣的曲線,這里為了在屏幕上能夠看到不是很密的曲線我們把x 乘以一個(gè)系數(shù)10,修改為:picx.line (timecountx - 1) * 10, datafromcomlastx)-(timecountx * 10, datafromcomx), vbwhite 這比較容易在屏幕上看到稀疏的曲線。由于是僅僅講解如何畫出實(shí)時(shí)的曲線,

8、讀者的計(jì)算機(jī)上未必有和串口相連的設(shè)備,這里用一個(gè)定時(shí)器控件來模擬從串口讀過來的數(shù)據(jù)。在窗體上放入一個(gè)timer 控件,修改timer 控件的屬性為: “enable”該為 true,“interval”改為 300。雙擊 timer 控件在它的過程中,添加代碼后如下:private sub timer1_timer() datafromcomlast = datafromcom randomize datafromcom = 3000 * rnd timecount = timecount + 1 drawrealline pic, timecount, datafromcom, datafr

9、omcomlast end sub 這樣在運(yùn)行后就可以看到我們想要的實(shí)時(shí)曲線了,如下圖:圖 2 下面是完整的代碼:option explicit dim datafromcom as integer 從串口讀過來的實(shí)時(shí)值dim datafromcomlast as integer 上次的串口值dim timecount as integer private sub form_load() picscale pic 調(diào)整圖像框的坐標(biāo)系picmidleline pic 在圖像框中畫一條中線end sub private sub picscale(picx as picturebox) 調(diào)整圖像框的

10、坐標(biāo)系picx.scale (0, picx.scaleheight)-(picx.scalewidth, -picx.scaleheight) end sub private sub picmidleline(picx as picturebox) 在圖像框中畫一條中線picx.line (0, 0)-(picx.scalewidth, 0), vbgreen 畫出中線end sub private sub drawrealline(picx as picturebox, timecountx as integer, datafromcomx as integer, datafromcomlastx as integer) if timecountx - 1 0 then picx.line (timecountx - 1) * 10, datafromcomlastx)-(timecountx * 10, datafromcomx), vbwhite end if end sub private sub timer1_timer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論