[VB.net 2008 Tested]
VB.net 所提供的 GDI+ 相當的好用,跟 VB6 比起來變得更有系統,也先進了許多,但相對的使用起來也複雜了許多,常常要用上了卻又想不起來,所以我在這裡整理了一下,一方面是方便自己查詢,一方面也是方便其它的 VB.net 的初學者們記憶。我沒有受過正規的程編教育,因此文內若有用詞錯誤或是不準確的地方,請不吝指正,謝謝。
Notice 本篇文章適用於已經具有這方面經驗,只是需要速查的人閱讀。 因此本篇不會講解原理,而且文字使用會相當的精簡。並僅表列常用的數種,需要完整的資訊,請上MSDN。 |
完整範例:在表單繪製出一個2點寬的藍邊、紅底,位於(0,0),寬、高皆為100的矩形,並會自動重繪。
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim g As Graphics = e.Graphics Dim p As New Pen(Color.Blue, 2) Dim b As New SolidBrush(Color.Red) Dim r As New Rectangle(0, 0, 100, 100) g.DrawRectangle(p, r) g.FillRectangle(b, r) End Sub |
一、先要建立 Graphics 物件。
◎ 利用 Paint 方法提供的 Graphics 物件:最常用的做法,Paint會自動幫你重繪。
Dim g as Graphics = e.Graphics |
◎ 利用 Image 變數: 將畫好的成果存在記憶體中以便後續處理。
Dim img as Image = New Bitmap(100,100) Dim g as Graphics = Graphics.FromImage(img) |
◎利用物件的 CreateGraphics:畫在其他物件上。
Dim g as Graphics = me.CreateGraphics |
二、繪圖的工具。
◎常用相關物件(都在 Drawing 命名空間下):
Pen | 畫筆。畫線時的畫筆粗細、色彩。可自行宣告或使用系統預設以顏色命名的畫筆。 宣告例:Dim p As New Pen(顏色, 粗細) |
SolidBrush | 純色圖刷。著色時的顏色。自行宣告或使用系統預設以顏色命名的圖刷。 宣告例:Dim b As New SolidBrush(顏色) |
TextureBrush | 材質圖刷。以圖片著色。 宣告例:Dim b As New TextureBrush(圖片或Image變數) |
HatchBrush | 圖樣圖刷。使用系統內建的條紋圖案著色。條紋有56種,請參閱:MSDN中文 宣告例:Dim b As New HatchBrush(條紋名稱) |
LinearGra_ dientBrush | 漸層圖刷。以漸層色彩著色。拼接方式,請參閱備注(1)。(不含底線、斷行) 宣告:Dim b As New Drawing2D.LinearGradientBrush(點1,點2,色1,色2) |
Point | 點。宣告一個點。PointF:指定一個具有浮點數的點。 宣告例:Dim p As New Point(X軸,Y軸) |
Rectangle | 矩形。宣告一個矩形,包含左上角的位置和寬、高。RectanglF:包含浮點數。 宣告例:Dim r As New Rectangle(X軸,Y軸,寬,高) |
Size | 尺寸。宣告矩形的尺寸。 宣告例:Dim s As New Size(寬,高) |
Font | 字型。設定字型。樣式有五種,請參閱:MSDN中文 宣告例:Dim f As New Font(字體,大小,樣式,大小的單位) |
WrapMode的種類,分別是Clamp(不重複)、Tile(重複拼貼)、TileFlipX(X軸翻轉拼貼)、TileFlipXY(XY軸翻轉拼貼)、TileFlipY(Y軸翻轉拼貼)、。
◎常用繪圖函數(參數所代表的意義/參數型別):
※X軸,Y軸:除非特別說明,指的是圖形左上角那一點的X軸和Y軸。
DrawImage | 繪製圖片。 DrawImage(圖片 ,圖片左上角)/DrawImage(bitmap ,PointF) DrawImage(圖片,圖片範圍)/DrawImage(bitmap ,RectangleF) DrawImage(圖片,X軸,Y軸,寬,高)/DrawImage(bitmap,Int,Int,Int,Int) |
DrawRectangle | 繪製矩形,繪製邊線但是不會填滿,請參考下項。 DrawRectangle (畫筆,X軸,Y軸 ,寬,高)/DrawRectangle(Pen,Int,Int,Int,Int) 以指定的畫筆來繪製指定的矩形。 |
FillRectangle | 填滿矩形。不同於上項,這種方法只會畫出矩形的內部。所有Fill系列的函數都是如此,因此以下只會列出Draw系列的函數,請自行理解。一般來說只要將畫筆改成圖刷就可以了。 FillRectangle (圖刷,X軸,Y軸 ,寬,高)/FillRectangle(Brush系列,Int,Int,Int,Int) 以指定的圖刷來繪製指定的矩形。 |
DrawLine | 繪製線段。沒有FillLine這玩意,注意了。 DrawLine (畫筆,始X軸,始Y軸 ,終X軸,終Y軸)/DrawLine(Pen,Int,Int,Int,Int) DrawLine (畫筆,始點,終點)/DrawLine(Pen,Point,Point) |
DrawEllipse | 繪製圓形或橢圓形,繪製邊線但是不會填滿。用FillEllipse繪製填滿圖形。矩形範圍指的是可以把圓或橢圓塞滿的範圍,若長寬相同則會畫出正圓形。 DrawEllipse (畫筆,X軸,Y軸 ,寬,高)/DrawEllipse(Pen,Int,Int,Int,Int) 以指定的畫筆來繪製指定的圓形或橢圓形。 |
DrawArc | 繪製圓弧。沒有 FillArc。跟 DrawEllipse比起來多了兩個參數:起始角度、張開角度,所以除了這兩個參數外,其餘參數的意義皆與圓相同,只是畫出的是部分的圓而已。若啟始角度為正數,則將圓比作鐘面,0度是3點,正90度是6點,正180度是9點,負90度是12點。正為順時針、負為逆時針。見備註(2)。 DrawArc(畫筆,X軸,Y軸 ,寬,高,始角,張角)/DrawArc(Pen,Int,Int,Int,Int,Int,Int) 以指定的畫筆來繪製指定的圓弧。 |
DrawPie | 繪製扇形,繪製邊線但是不會填滿,請用FillPie繪製填滿圖形。使用方法和DrawArc相同,請參考上項。 DrawPie(畫筆,X軸,Y軸 ,寬,高,始角,張角)/DrawPie(Pen,Int,Int,Int,Int,Int,Int) 以指定的畫筆來繪製指定的扇形。 |
DrawString | 繪製文字。 DrawString (文字,字型,圖刷 ,X軸,Y軸)/DrawString(String,Font,Brush系列,Int,Int) |
>>最常用的部分到此為止,下次會介紹比較少用的繪圖函數
留言列表