• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    實時曲線的繪制和保存

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 39次 | 進入軟件測試論壇討論

    領測軟件測試網        在VB中繪制實時曲線是比較難的,一般要應用第三方控件或是Windows API函數來完成,但是如果你對實時曲線的要求不是很高,只要能表示出當前的一般情況的話,我們可以直接應用VB提供給我們的空間來完成.


           原則上講,直接在Form里繪制曲線都是可以的,MSDN上面很多例程就是直接在Form里面繪制圖形的,Form作為繪制圖形的容器,不過一般應用中Form中不可避免的會有很多其他控件,所以我們選擇PictureBox作為繪制曲線的容器.


           實時曲線的繪制一般借助于Timer控件來完成,使用Timer控件,定期將串口或是其他儀器中監測到的數據送往PictureBox1,而曲線的繪制一般畫成折線圖,采用PictureBox1的Line方法繪制.具體實現如下:


           1.選擇需要顯示的窗體Picture1,加入圖片框Picture1,根據實際需要設置圖片的大小并移到合適的位置,并在圖片的外面畫好量程----時間坐標系;然后加上Timer控件以及兩個CommandButton,界面就基本設置好了.


         2.建立坐標系,根據Picture1的大小和高度設置畫出坐標系的X軸和Y軸:


    Picture1 .ScaleMode = 1  ‘以VB的基本單位作為建立坐標軸以及繪制圖形的單位;
    Picture1.Refresh
    Picture1.CurrentX = Picture1.ScaleLeft +100
    Picture1.CurrentY = Picture1.ScaleTop
    Picture1.Print  Picture1.ScaleHeight - 100
    Picture1.Line(Picture1.ScaleLeft+100,Picture1.ScaleTop+100)-(Picture1.ScaleLeft+100, Picture1.ScaleHeight - 100)
    Picture1.CurrentX = Picture1.ScaleLeft +100
    Picture1.CurrentY = Picture1.ScaleHeight
    Picture1.Print  “(0,0)”
    Picture1.Line (Picture1.ScaleLeft + 100, Picture1.ScaleHeight - 100)-(Picture1.ScaleWidth - 100, Picture1.ScaleHeight - 100)
    Picture1.CurrentX = Picture1.ScaleWidth
    Picture1.CurrentY = Picture1.ScaleHeight
    Picture1.Print  Picture1.ScaleWidth-100
    Picture1.AutoRedraw = True        ‘必要時,用存儲在內存中的圖象進行重繪


           3.繪制曲線并保存,我們這里以正弦曲線作為繪制曲線的數據來源,具體應用是可以采用由串口或其他儀器采集得到的數據.首先我們繪制一條中線,然后在Timer控件的Time事件中繪制曲線:


    Picture1.Line (Picture1.ScaleLeft, CInt(Picture1.ScaleHeight / 2))-(Picture1.ScaleWidth, CInt(Picture1.ScaleHeight / 2)) ‘繪制中線
    Private Sub Timer1_Timer()
    Dim y1 As Integer
    y1 = CInt(Sin((x - Picture1.Left) / 20 / 180 * pi) * Picture1.ScaleHeight / 2)
    y1 = CInt((Picture1.ScaleHeight + 1000) / 2) - y1
    Picture1.Line (x, y)-(x + 20, y1)
    x = x + 20
    y = y1
    If x >= Picture1.ScaleWidth Then
        SavePicture Picture1.Image, "c:\sin.bmp"    ‘保存圖畫,可以根據實際需要命名圖片
        x = 0
        y = Picture1.ScaleHeight / 2
        Picture1.Cls   ‘清屏重畫
       End If
    End Sub


           從上面的過程可以看出,其實對于要求不高的實時曲線的繪制還是比較簡單的,在這里我采用的是清屏重畫圖像,如果要實現圖像往左移動,圖像仍然保留的效果,可以采用Windows的Bitblt函數,可以讓圖像每次移動一個象素或是多少個twip,具體實現可以參見<<應用VB4.0實現工業控制的實時曲線和歷史曲線>>( http://www.swm.com.cn/yingyong/rj-98-yy4/98-y4-yy6.htm).


           以上只是實時曲線繪制的一點簡單說明,具體應用中可能需要花更多的功夫修飾圖像,顯示時間(可以依據上面的代碼中的Picture1.Print實現),但是基本原理大同小異.

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>