。net ?其實還是很好繪制圖形的
創(chuàng)新互聯(lián)成立與2013年,先為江蘇等服務(wù)建站,江蘇等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江蘇企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
你可以看下?Graphics ?類
Dim d As New Bitmap(Me.Width, Me.Height) ?‘一個圖片吧
? Dim g As Graphics = Graphics.FromImage(d)’繪制 ?準(zhǔn)備在這個圖片是進(jìn)行
然后 ?就是你繪制的東西了
線 就是 ??g.DrawLine()
圓 弧度 ?就用 ?g.DrawArc(Pens.Black, New Rectangle(0, 0, 400, 200), 0, 360)
復(fù)雜的就是 ? ? ?g.DrawBezier()
等 ?如果你用的是 VS的 ?編譯 ?上面都有詳細(xì)的參數(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系統(tǒng)的坐標(biāo)原點在左上角,X軸的正方向是水平向右,而Y軸的正方向是垂直向下。所以,要繪制三角函數(shù)的曲線,自己可以通過改變點坐標(biāo)的方法來實現(xiàn),當(dāng)然,VB.NET提供了相應(yīng)的方法可以來實現(xiàn)坐標(biāo)變換,也可以通過VB.Net的Graphics類提供的平移、旋轉(zhuǎn)等轉(zhuǎn)換來實現(xiàn)。
下面是我通過自己變換實現(xiàn)的示例,提供參考;我的環(huán)境是VB.NET 2010
Imports System.Math
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
? '1,獲得一個Graphics對象
? Dim MyGraphics As Graphics
? MyGraphics = PictureBox1.CreateGraphics
? '2,定義一個Pen對象,用于繪制圖形(輪廓線)
? Dim MyPen As New Pen(Color.Black, 1)
? '3,定義一個Brush對象,用于填充圖形(如果需要填充的話)
? Dim MyBrush As New SolidBrush(Color.Orange)
? MyGraphics.DrawLine(MyPen, 0, 200, 700, 200)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
? '1,獲得一個Graphics對象
? Dim MyGraphics As Graphics
? MyGraphics = PictureBox1.CreateGraphics
? '2,定義一個Pen對象,用于繪制圖形(輪廓線)
? Dim MyPen As New Pen(Color.Black, 1)
? '3,定義一個Brush對象,用于填充圖形(如果需要填充的話)
? Dim MyBrush As New SolidBrush(Color.Orange)
? '聲明橫向和縱向比例變量
? Dim Heng As Integer = 20
? Dim Zong As Integer = 50
? '先獲得正弦值,保存到點坐標(biāo)數(shù)組
? Dim MyPoints(700) As Point
? Dim i As Integer
? For i = 0 To 700
? ? ? MyPoints(i) = New Point(i * Heng, 200 + Sin(i) * Zong)
? Next
? '采用繪制光滑線連接點的方式繪制曲線
? MyGraphics.DrawCurve(MyPen, MyPoints)
End Sub
End Class
顯示的效果圖:
這問題有點籠統(tǒng),軟糖來說說把:
圖像處理由System.Drawing命名空間負(fù)責(zé)。
主要是Bitmap類和Graphics類。
Bitmap表示一個位圖,可以是BMP,JPG,PNG等文件。
裝載位圖
Dim?位圖?As?Bitmap?=?Bitmap.FromFile("C:\Image1.PNG")
Graphics表示一張畫紙,能夠進(jìn)行繪制操作。
它可以被窗體、控件、位圖調(diào)用CreateGraphics()方法來創(chuàng)建。
然后調(diào)用Graphics.Draw開頭的一系列函數(shù)來繪制圖像和圖形,F(xiàn)ill開頭的填充圖形。
創(chuàng)建畫紙并繪制位圖
Dim?畫紙?As?Graphics?=?Me.CreateGraphics()
畫紙.DrawImage(位圖,?100,?100,?256,?256)
可以將上面三行放到Form1_Load中測試,把路徑改一下,
還可以把Me改為能在上面繪圖的控件的名稱。
更多內(nèi)容請看MSDN的System.Drawing命名空間。
如滿意,請采納,謝謝。
一、分析:
1,這一類隨時間而變化的曲線圖,通常把橫軸作為時間,把縱軸作為相應(yīng)的值,在這里就是密度值。
2,點的集合就是線;一組時間、密度值,對應(yīng)一個點,把點連接起來就構(gòu)成了線。
二、在VB.NET中作圖,需要知道并解決幾個問題:
1,與VB6一樣,VB.NET中默認(rèn)的坐標(biāo)系統(tǒng),左上角為坐標(biāo)原點,X軸的正向為從左向右,Y軸的正向是從上向下。
為了使得它與數(shù)學(xué)中的坐標(biāo)系統(tǒng)相一致,可以使用VB.NET中Graphics類的兩個方法;
1、TranslateTransform----平移變換
格式:Graphics.TranslateTransform(dx,dy)
其中:dx 和 dy分別是Single數(shù)據(jù)類型
2、ScaleTransform----縮放變換
格式:Graphics.ScaleTransform(sx,sy)
其中:sx 和 sy分別是Single數(shù)據(jù)類型;
例如:為了符合數(shù)學(xué)中的一般格式,可以使用下述代碼:
Graphics.ScaleTransform(1, -1)
這樣就把Y軸的正方向給翻過來了。
三、VB.NET中繪制圖形
1,繪制圓或橢圓
'繪制圖形的三步曲
'1,獲得一個Graphics對象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個Pen對象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
'3,定義一個Brush對象,用于填充圖形(如果需要填充的話)
Dim MyBrush As New SolidBrush(Color.Orange)
'繪制一個實心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.FillEllipse(Brush, 200, 200, 100, 100)
'繪制一個空心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.DrawEllipse(Pen, 200, 200, 100, 100)
注意:最后兩個數(shù)值如果不等,就是繪制橢圓
當(dāng)圓足夠小,就是點了。
2,繪制直線
'1,獲得一個Graphics對象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個Pen對象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
MyGraphics.DrawLine(MyPen, 200, 200, 100, 100)
'或者直接用
Me.CreateGraphics.DrawLine(New Pen(Color.Black), 50, 50, 200, 200)