close

[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(字體,大小,樣式,大小的單位)

 

備註(1) :

ill_0

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)
以指定的畫筆來繪製矩形。

DrawRectangle (畫筆,矩形範圍)/DrawRectangle(Pen,Rectangle)
以指定的畫筆來繪製指定的矩形。
FillRectangle

填滿矩形。不同於上項,這種方法只會畫出矩形的內部。所有Fill系列的函數都是如此,因此以下只會列出Draw系列的函數,請自行理解。一般來說只要將畫筆改成圖刷就可以了。

FillRectangle (圖刷,X軸,Y軸 ,寬,高)/FillRectangle(Brush系列,Int,Int,Int,Int)
以指定的圖刷來繪製矩形。

FillRectangle (圖刷,矩形範圍)/FillRectangle(Brush系列,Rectangle)
以指定的圖刷來繪製指定的矩形。
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)
以指定的畫筆來繪製圓形或橢圓形。

DrawEllipse (畫筆,矩形範圍)/DrawEllipse(Pen,Rectangle)
以指定的畫筆來繪製指定的圓形或橢圓形。
DrawArc

繪製圓弧。沒有 FillArc。跟 DrawEllipse比起來多了兩個參數:起始角度、張開角度,所以除了這兩個參數外,其餘參數的意義皆與圓相同,只是畫出的是部分的圓而已。若啟始角度為正數,則將圓比作鐘面,0度是3點,正90度是6點,正180度是9點,負90度是12點。正為順時針、負為逆時針。見備註(2)

DrawArc(畫筆,X軸,Y軸 ,寬,高,始角,張角)/DrawArc(Pen,Int,Int,Int,Int,Int,Int)
以指定的畫筆來繪製圓弧。

DrawArc (畫筆,矩形範圍,始角,張角)/DrawArc(Pen,Rectangle,Int,Int)
以指定的畫筆來繪製指定的圓弧。
DrawPie

繪製扇形,繪製邊線但是不會填滿,請用FillPie繪製填滿圖形。使用方法和DrawArc相同,請參考上項。

DrawPie(畫筆,X軸,Y軸 ,寬,高,始角,張角)/DrawPie(Pen,Int,Int,Int,Int,Int,Int)
以指定的畫筆來繪製扇形。

DrawPie (畫筆,矩形範圍,始角,張角)/DrawPie(Pen,Rectangle,Int,Int)
以指定的畫筆來繪製指定的扇形。
DrawString

繪製文字。

DrawString (文字,字型,圖刷 ,X軸,Y軸)/DrawString(String,Font,Brush系列,Int,Int)
以指定的畫筆來繪製文字。

 

備註(2) :

angles

>>最常用的部分到此為止,下次會介紹比較少用的繪圖函數

arrow
arrow
    全站熱搜

    polyamide 發表在 痞客邦 留言(0) 人氣()