'把“Dim graph As Graphics = Me.CreateGraphics”挪到“Button1_Click”事件內(nèi),調(diào)試過(guò)成功!

10年積累的做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有歷城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim graph As Graphics = Me.CreateGraphics
Dim pen2 As Pen = New Pen(Color.Green, 3)
graph.DrawLine(pen2, 400, 400, 500, 200)
End Sub
End Class
1.用picturebox 控件可以實(shí)現(xiàn)
2.可以使用Scale方法移動(dòng)坐標(biāo)原始位置和改變坐標(biāo)軸方向,以下該方法:
Scale(x1,y1)-(x2,y2)
X1和y1為對(duì)象左上角的新坐標(biāo)位置;
X2和y2為對(duì)象右下角的新坐標(biāo)位置;
現(xiàn)在讓我們看看一些范例。這一方法將使原點(diǎn)處于左上角,但將坐標(biāo)系統(tǒng)單位改變?yōu)榇绑w大小的1/100:
Picture1.Scale(0,0)-(100,100)
以下調(diào)用將移動(dòng)原點(diǎn)到窗體的左下角,并旋轉(zhuǎn)Y軸:
Picture1.Scale(0,100)-(100, 0)
以下調(diào)用將移動(dòng)原點(diǎn)到窗體的正中心,并旋轉(zhuǎn)Y軸,然后將坐標(biāo)單位轉(zhuǎn)換為窗體大小的1/5000:
Picture1.Scale(-2500,2500)-(2500,2500)
用Picture1.Line (x1,y1)-(x2,y2)
如果不指定(x1,y1)則line方法默認(rèn)為上次line方法的(x2,y2)為當(dāng)前l(fā)ine方法(x1,y1)
For i = 1 To 100
j = i + 10
Me.Picture1.Line -(i, j), vbRed '可以指定畫(huà)線的顏色
Next
3.如果畫(huà)到最右邊的時(shí)候,可以清掉picturebox 的內(nèi)容,從頭再畫(huà)。
給段代碼,供參考:
Private Sub Form_Load()
Dim i, j As Integer
Me.Picture1.Scale (0, Me.Picture1.Height)-(Me.Picture1.Width, 0)
Me.Picture1.AutoRedraw = True
Me.Picture1.Line (0, 0)-(0, 0), vbRed
For i = 1 To 1000
j = i + 10
Me.Picture1.Line -(i, j), vbRed
Next
End Sub
我這樣畫(huà)過(guò)曲線,大概思路就是這樣吧,希望能幫到你
可以把所有畫(huà)的線都保存在一個(gè)列表中,畫(huà)的時(shí)候全部畫(huà)出即可。如下:
Public?Class?Form1
Class?Line? ? ? '直線類(lèi)
? Public?Point1,?Point2?As?Point? ? ?'成員,直線的兩個(gè)端點(diǎn)
? Sub?New(p1?As?Point,?p2?As?Point)? ?'構(gòu)造方法
? ? ? Point1?=?p1
? ? ? Point2?=?p2
? End?Sub
? Public?Sub?Draw(g?As?Graphics)? ? ? '繪制方法
? ? ? g.DrawLine(Pens.Black,?Point1,?Point2)
? End?Sub
End?Class
Private?Lines?As?New?List(Of?Line)? ? ? '列表用于保存所有畫(huà)下的直線
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
? BackColor?=?Color.White
? DoubleBuffered?=?True? ? ? ?'開(kāi)啟雙緩沖可有效避免閃爍
End?Sub
Private?Sub?Form1_MouseDown(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseDown
? Lines.Add(New?Line(e.Location,?e.Location))? ? ?'在直線列表中添加直線
End?Sub
Private?Sub?Form1_MouseMove(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseMove
? If?e.Button??Windows.Forms.MouseButtons.Left?Then?Return?'左鍵未按下
? '鼠標(biāo)拖動(dòng)時(shí)改變列表最后一條直線(也即當(dāng)前直線的第二個(gè)端點(diǎn))
? Lines(Lines.Count?-?1).Point2?=?e.Location
? Refresh()? ? ? ?'刷新窗體
End?Sub
'在Form的Paint事件中繪制所有直線,每次Form1重繪時(shí)都會(huì)觸發(fā)Paint事件
'PS:?也可以通過(guò)重寫(xiě)OnPaint方法來(lái)達(dá)到類(lèi)似的效果
Private?Sub?Form1_Paint(sender?As?Object,?e?As?PaintEventArgs)?Handles?Me.Paint
? e.Graphics.SmoothingMode?=?Drawing2D.SmoothingMode.AntiAlias? ? '開(kāi)啟抗鋸齒
? For?Each?l?In?Lines? ? ?'遍歷所有直線
? ? ? l.Draw(e.Graphics)? '調(diào)用繪制方法,傳入的參數(shù)可以理解為畫(huà)布
? Next
End?Sub
End?Class
運(yùn)行效果:
首先你要建一個(gè) Bitmap
再將picture控件的image屬性與之相關(guān)聯(lián)
再到 picture的image上畫(huà)線
保存image到文件
/////////////////////////////////
Dim mybitmap As Bitmap
mybitmap = New Bitmap(300, 150)
PictureBox0.Image = mybitmap
Dim Graph As Graphics
Graph =Graphics.FromImage(PictureBox0.image)
Graph .drawline(Pens.Blue,0,0,111,111)
picturebox0.image.save("c:\aaa.jpg")
/////////////////////////////////////
存成的文件絕對(duì)有你畫(huà)的線..我一直在用這種方法
網(wǎng)站題目:vb.netgraph的簡(jiǎn)單介紹
當(dāng)前URL:http://chinadenli.net/article45/dsgdoei.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣、App開(kāi)發(fā)、網(wǎng)站策劃、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)