中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

vb.net中畫曲線 vb實時曲線繪制

vb.net連續(xù)繪制曲線圖不消失

您好,您是想問vb.net連續(xù)繪制曲線圖不消失怎么辦?b.net連續(xù)繪制曲線圖不消失的解決辦法如下:

創(chuàng)新互聯(lián)成立于2013年,先為阿城等服務建站,阿城等地企業(yè),進行企業(yè)商務咨詢服務。為阿城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

1、首先必須創(chuàng)建bitmap,關聯(lián)到picturebox1.image上。

2、再在picturebox1.image上創(chuàng)建Graphics,再進行作圖。即可顯示線圖。

vb.net 畫二維數(shù)組的曲線圖

Private Sub PictureBox2_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox2.Paint

Dim points As New List(Of Point)

points.Add(New Point(0, 0))

points.Add(New Point(1, 10))

points.Add(New Point(3, 15))

points.Add(New Point(14, 0))

points.Add(New Point(20, 60))

points.Add(New Point(40, 20))

points.Add(New Point(70, 50))

e.Graphics.DrawCurve(Pens.Red, points.ToArray)

End Sub

供參考,points可設為全局變量,那樣add隨便在哪增加,想要看見看上去動態(tài)的圖,那就在新增完n個后,繼續(xù)增加n+1個之時,放棄points中的第一個。

vb.net 繪制實時溫度曲線

這個要用GDI+畫。要看你.net版本。

以下是VS2005中的一段代碼。

Me.PictureBox1.Height = 450

Me.PictureBox1.Width = 880

Dim gr As Graphics '定義畫布

Dim bp As New Bitmap(880, 450) '定義位圖,并進行賦值

Dim p As New Pen(Color.Black) '定義畫筆

p.Width = 2 '寬度2

p.DashStyle = Drawing2D.DashStyle.Solid '樣式直線

PictureBox1.Image = bp

gr = Graphics.FromImage(PictureBox1.Image)

gr.FillRectangle(Brushes.White, New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height))

gr.DrawLine(p, a, b, a, .Height - b) '繪制縱坐標

gr.DrawLine(p, a, .Height - b, .Width - a, .Height - b) '繪制橫坐標

vb中如何畫曲線圖?

我先給你寫一段如果不明白加我QQ:905906

在工控制軟件中,實時曲線的繪制用途非常的廣泛,它可以很直觀的顯示出監(jiān)控數(shù)據(jù)的變化值和變化趨勢。在VB中實現(xiàn)曲線的繪制有很多種方法,本文介紹一種非常簡單的方法來實現(xiàn)實時曲線的繪制。

在VB中實現(xiàn)實時曲線的繪制,要利用VB的PictureBox(圖像)控件,和畫線函數(shù)line(x1,y1)-(x2,y2)。PictureBox控件,可以作為一個“容器”,在它的里面可以包含很多的對象。也可以執(zhí)行很多VB的內部函數(shù)。

要實現(xiàn)實時曲線的繪制,肯定要有外部實時數(shù)據(jù)的輸入,這里假設是有一個數(shù)據(jù)從計算機的串口輸入 定義該數(shù)據(jù)變量為DataFromCom。實時曲線反映的就是該數(shù)據(jù)。

打開VB6.0中文版,新建一個項目和窗體,修改窗體的屬性,將“Heigh”修改為:8000,“Width”修改為在窗體中放如一個PictureBox控件。然后重新定義PictureBox控件的一些基本屬性,在VB中選中PictureBox控件,直接在它的屬性框中,修改一些屬性參數(shù)?!懊Q”改為Pic。 “AutoRedraw”改為:True?!癇ackColor”改為:H00004000(墨綠色背景顏色)?!盚eigh”改為:5000?!癢idth”改為:8000。如圖1所示:

然后要重新定義PictureBox控件的坐標系。圖像框的默認坐標系,是從左上角開始的,不符合我們的畫線要求。修改坐標系的目的是讓曲線從圖像框的左邊正中間,開始畫線。修改圖像框的坐標系,這里定義一個過程PicScale(),代碼如下:

Private Sub PicScale(picX As PictureBox)

picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)

End Sub

一般的實時曲線顯示的時候在屏幕的正中間有一條基準線,這里也要畫出這條基準線,用一個過程PicMidleLine()來實現(xiàn),代碼如下:

Private Sub PicMidleLine( picX As PictureBox)

picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '畫出中線

End Sub

要畫一條實時曲線,坐標軸的設定很重要,在這里把X軸設定為時間軸,Y軸設定為數(shù)據(jù)軸。對應X軸我們定義一個時間變量TimeCount,TimeCount會隨著時間逐漸遞增,每次遞增,對應著一個從串口讀過來的數(shù)據(jù)DataFromCom,這樣圖像框中的(x,y)坐標點實際上就對應著(TimeCount,DataFromCom)如果只是當TimeCount發(fā)生變化時就在圖像框上畫一個點,就只需調用VB中的畫像素的函數(shù)point(x,y),這里x,y為所畫的點的坐標。單這樣畫出來的是一個個不連續(xù)的點。我們想要的是實時的連續(xù)的曲線,所以要調用VB中的畫線的函數(shù)line(x1,y1)-(x2,y2),這里(x1,y1)(x2,y2)為所要畫的線的起點和終點的坐標。只要把上次串口讀過來的數(shù)據(jù)(這里把它定義為變量DataFromComLast)和現(xiàn)在串口讀過來的數(shù)據(jù)(DataFromCom)和TimeCount相對應,調用line(x1,y1)-(x2,y2)函數(shù)就可以在圖像框中畫出實時的曲線了。把它寫成一個過程如下面的代碼:

Private Sub DrawRealLine(picX As PictureBox, 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

有了三個過程就可以在圖像框中畫出一條實時的曲線了。

DrawRealLine()過程中的picX.Line (TimeCountX - 1, DataFromComLastX)-(TimeCountX, DataFromComX), vbWhite所畫線的起始點和結束點都是以像素為單位的,這樣以來如果不改變的話,畫出來的線將是一個屏幕上像素相連的很密的曲線,通過調整line(x1,y1)-(x2,y2)

中的x的值,就可以畫出分布密度不一樣的曲線,這里為了在屏幕上能夠看到不是很密的曲線我們把x乘以一個系數(shù)10,修改為:

picX.Line ((TimeCountX - 1) * 10, DataFromComLastX)-(TimeCountX * 10, DataFromComX), vbWhite

這比較容易在屏幕上看到稀疏的曲線。

由于是僅僅講解如何畫出實時的曲線,讀者的計算機上未必有和串口相連的設備,這里用一個定時器控件來模擬從串口讀過來的數(shù)據(jù)。在窗體上放入一個Timer控件,修改Timer控件的屬性為:“Enable”該為True,“Interval”改為300。雙擊Timer控件在它的過程中,添加代碼后如下:

Private Sub Timer1_Timer()

DataFromComLast = DataFromCom

Randomize

DataFromCom = 3000 * Rnd

TimeCount = TimeCount + 1

DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast

End Sub

這樣在運行后就可以看到我們想要的實時曲線了,如下圖:

圖 2

下面是完整的代碼:

Option Explicit

Dim DataFromCom As Integer '從串口讀過來的實時值

Dim DataFromComLast As Integer '上次的串口值

Dim TimeCount As Integer

Private Sub Form_Load()

PicScale Pic '調整圖像框的坐標系

PicMidleLine Pic '在圖像框中畫一條中線

End Sub

Private Sub PicScale(picX As PictureBox) '調整圖像框的坐標系

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

DataFromComLast = DataFromCom

Randomize

DataFromCom = 3000 * Rnd

TimeCount = TimeCount + 1

DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast '畫出實時的曲線

End Sub

vb.net繪制曲線圖

。net ?其實還是很好繪制圖形的

你可以看下?Graphics ?類

Dim d As New Bitmap(Me.Width, Me.Height) ?‘一個圖片吧

? Dim g As Graphics = Graphics.FromImage(d)’繪制 ?準備在這個圖片是進行

然后 ?就是你繪制的東西了

線 就是 ??g.DrawLine()

圓 弧度 ?就用 ?g.DrawArc(Pens.Black, New Rectangle(0, 0, 400, 200), 0, 360)

復雜的就是 ? ? ?g.DrawBezier()

等 ?如果你用的是 VS的 ?編譯 ?上面都有詳細的參數(shù)說明

Dim?d?As?New?Bitmap(Me.Width,?Me.Height)

Dim?g?As?Graphics?=?Graphics.FromImage(d)

g.DrawArc(Pens.Black,?New?Rectangle(0,?0,?200,?200),?0,?360)

g.DrawLine(Pens.Red,?New?Point(0,?0),?New?Point(200,?200))

g.DrawLines(Pens.Green,?New?Point()?{New?Point(0,?0),?New?Point(50,?40),?New?Point(50,?80),?New?Point(90,?70),?New?Point(100,?400)})

g.DrawBezier(Pens.Yellow,?New?Point(0,?100),?New?Point(0,?0),?New?Point(200,?0),?New?Point(200,?200))

g.Dispose()

Me.BackgroundImage?=?d

本文名稱:vb.net中畫曲線 vb實時曲線繪制
文章出自:http://m.rwnh.cn/article24/hhgpce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、企業(yè)網(wǎng)站制作、品牌網(wǎng)站建設Google、網(wǎng)站維護網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
安徽省| 聂拉木县| 林甸县| 井研县| 环江| 卫辉市| 江陵县| 南昌市| 神农架林区| 乐业县| 多伦县| 康平县| 蒙山县| 宜昌市| 博罗县| 苍梧县| 奉节县| 阿坝| 武城县| 牟定县| 登封市| 新建县| 胶州市| 高州市| 手游| 朝阳县| 浙江省| 壶关县| 安多县| 瓮安县| 新绛县| 察雅县| 清水河县| 福泉市| 邵阳县| 凤庆县| 通江县| 孟州市| 海伦市| 和顺县| 青浦区|