一、分析:
雅安網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
1,這一類隨時(shí)間而變化的曲線圖,通常把橫軸作為時(shí)間,把縱軸作為相應(yīng)的值,在這里就是密度值。
2,點(diǎn)的集合就是線;一組時(shí)間、密度值,對(duì)應(yīng)一個(gè)點(diǎn),把點(diǎn)連接起來就構(gòu)成了線。
二、在VB.NET中作圖,需要知道并解決幾個(gè)問題:
1,與VB6一樣,VB.NET中默認(rèn)的坐標(biāo)系統(tǒng),左上角為坐標(biāo)原點(diǎn),X軸的正向?yàn)閺淖笙蛴?,Y軸的正向是從上向下。
為了使得它與數(shù)學(xué)中的坐標(biāo)系統(tǒng)相一致,可以使用VB.NET中Graphics類的兩個(gè)方法;
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,獲得一個(gè)Graphics對(duì)象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
'3,定義一個(gè)Brush對(duì)象,用于填充圖形(如果需要填充的話)
Dim MyBrush As New SolidBrush(Color.Orange)
'繪制一個(gè)實(shí)心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.FillEllipse(Brush, 200, 200, 100, 100)
'繪制一個(gè)空心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.DrawEllipse(Pen, 200, 200, 100, 100)
注意:最后兩個(gè)數(shù)值如果不等,就是繪制橢圓
當(dāng)圓足夠小,就是點(diǎn)了。
2,繪制直線
'1,獲得一個(gè)Graphics對(duì)象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)
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)
VB.net與VB不同。
VB.net已經(jīng)有專門繪圖的類。
可以定義筆刷然后用Drawing類中的方法繪制。
Private Sub DrawEllipse()
Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)
Dim formGraphics as System.Drawing.Graphics
formGraphics = Me.CreateGraphics()
formGraphics.DrawEllipse(myPen, New Rectangle(0,0,200,300))
myPen.Dispose()
formGraphics.Dispose()
End Sub
Private Sub DrawRectangle()
Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)
Dim formGraphics as System.Drawing.Graphics
formGraphics = Me.CreateGraphics()
formGraphics.DrawRectangle(myPen, New Rectangle(0,0,200,300))
myPen.Dispose()
formGraphics.Dispose()
End Sub
這問題有點(diǎn)籠統(tǒng),軟糖來說說把:
圖像處理由System.Drawing命名空間負(fù)責(zé)。
主要是Bitmap類和Graphics類。
Bitmap表示一個(gè)位圖,可以是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中測(cè)試,把路徑改一下,
還可以把Me改為能在上面繪圖的控件的名稱。
更多內(nèi)容請(qǐng)看MSDN的System.Drawing命名空間。
如滿意,請(qǐng)采納,謝謝。
首先,還是談?wù)剤D像像素時(shí)數(shù)據(jù)獲取方面吧,.net中的圖像相關(guān)類基本上都是基于GDI+的,因此,圖像數(shù)據(jù)的獲取其實(shí)也是調(diào)用GDI+的一些函數(shù)。這個(gè)函數(shù)就是LockBits,在vb.net中彩色圖像數(shù)據(jù)的快速獲取 一文中,我們是調(diào)用了Marshal.Copy把LockBits鎖定的內(nèi)存數(shù)據(jù)拷貝到數(shù)據(jù)中,然后對(duì)數(shù)組中的值進(jìn)行處理。這樣做主要的原因是VB.NET不好直接訪問內(nèi)存(Marshal.ReadByte之類的函數(shù)不適合用于大型的循環(huán)中)。那么,這就造成了2個(gè)不好的事情,第一:在同一時(shí)間需要2倍于圖像數(shù)據(jù)量的內(nèi)存,第二:內(nèi)存數(shù)據(jù)拷貝到數(shù)據(jù),以及處理后再把數(shù)組的數(shù)據(jù)拷貝會(huì)內(nèi)存中都是會(huì)減低速度的。作為一種改進(jìn),我們應(yīng)該充分利用LockBits的功能。LockBits中的LockMode中有一種模式為ImageLockMode.UserInputBuffer,該模式下需要用戶先申請(qǐng)內(nèi)存,然后在把圖像數(shù)據(jù)按照相關(guān)格式填充如這個(gè)內(nèi)存中。這樣,就可以先定義個(gè)數(shù)組,然后把圖像數(shù)據(jù)填充到這個(gè)數(shù)組中,就避免了來回拷貝的耗時(shí)了,簡(jiǎn)單示例代碼如下:
Dim BmpData As New BitmapData
Stride = ((Bmp.Width * 3 + 3) And HFFFFFFFC)
Dim PixleValue(Stride * Bmp.Height) As Byte
Dim Hanlde As GCHandle = GCHandle.Alloc(PixleValue, GCHandleType.Pinned)
BmpData.Scan0 = Hanlde.AddrOfPinnedObject()