●PictureBox與Frame對象一樣,本身都能裝載其它的對象而自己形成一個對象群組。
●如果要拿PictureBox裝載對象時,可以把它視為Frame來使用。
●與Image對象一樣在設計階段時,以Picture屬性來加載圖片。
●與Image對象一樣都是在屬性對話窗口按一下〝...〞鈕后,跳出〝加載圖片〞對話框,選擇所要的圖檔,然后加載。
●在執(zhí)行階段,可以用VB的函數來幫PictureBox加載圖片:
Command1_Click()
Picture1.Picture = LoadPicture("E:\MyGif\AniGif0562.gif")
End Sub
●在設計階段,若后悔加載圖片,想把它消除時,可以把PictureBox按Delete鍵刪掉,然后從工具箱拖曳一個新的PictureBox,或是在屬性對話框里的Picture屬性,把〝(位圖)〞這幾個反白,或是移到〝(〞的最前端,按一下鍵盤的Delete鍵即可移除圖片。
●若在執(zhí)行階段,想把PictureBox內的圖片移除,可再用LoadPicture函數,并且傳空字符串給它:
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("")
End Sub
--------------------------------------------------------------------------------
●在PictureBox里畫圖:
●PSet方法:PSet不只是用在PictureBox上,也可以用在窗體上,PSet最主要功用用就是在某一點位置上畫一個點,用法是Object.PSet(X,Y), Color: Private Sub Command1_Click()
Picture1.PSet(500,260),RGB(128,0,255)
'RGB函數是以紅色、綠色、藍色來表示顏色,詳情請到函數指令參考
End Sub
●若顏色省略,則以PictureBox預設的顏色。
●前面有學到隨機數的運用,因此我們來做個范例看看,范例─滿天繁星:
Private Sub Timer1()_Timer
Randomize
X = Int(Rnd * Picture1.ScaleWidth)
Y = Int(Rnd * Picture1.ScaleHeight)
R = Int(Rnd * 256)
G = Int(Rnd * 256)
B = Int(Rnd * 256)
Picture1.PSet (X, Y), RGB(R, G, B)
End Sub
●Line方法:Line方法專門用來畫直線的工具,在窗體上也可以使用,用法:Object.Line(X1,Y2)-(X2,Y2), Color, BF
●Color在Line里與PSet一樣是可以被省略的,在Color后方,若是加入B則畫出的不是線條,而是一個空心矩形,若是BF,則畫出來的是實心矩形。
Private Sub Command1_Click()
Picture1.Line(50,50)-(500,750)
End Sub
Private Sub Command1_Click()
Picture1.Line(50,50)-(500,750), ,B
End Sub
Private Sub Command1_Click()
Picture1.Line(50,50)-(500,750), ,BF
End Sub
●Circle方法:Circlr方法專門用來畫圓,窗體上也是可以使用,用法:Object.Circle(X,Y), R, Color, 起始角度, 終止角度, 橢圓率
Private Sub Command1_Click()
Picture1.Circle(1000, 1000), 800
End Sub
Private Sub Command1_Click()
Const PI = 3.1415926535
Picture1.Circle (1000, 1000), 800, , PI / 4, 3 * PI / 4
End Sub
●若是設定起始角度與終止角度,畫出來的圓會變成弧,而角度單位使用的是弧度,也就是說,180。=3.1415926535...對于沒有學過弧度的網友來說,可能是難了點。
Private Sub Command1_Click()
Const PI = 3.1415926535
Picture1.Circle (1000, 1000), 800, , -PI / 4, -3 * PI / 4
End Sub
●若是起始角或終止角使用負數,它們還由由圓心畫直線到起始角或終止角,這樣就可以畫出扇形。
Private Sub Command1_Click()
Picture1.Circle (1000, 1000), 800, , , , 0.75
End Sub
●橢圓率則是圓的Y軸與X軸的比值,也就是 Y/X ,可以畫出橢圓形。
●范例:在PictureBox里,拖曳產生一個圓
(一般)
Dim Dx As Single, Dy As Single
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Dx = X
Dy = Y
End If
End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Cls
Picture1.Line (Dx, Dy)-(X, Y)
Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)
End If
End Sub Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Cls
Picture1.AutoRedraw = True
Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)
Picture1.AutoRedraw = False
End If
End Sub
●Cls方法:Cls方法,就是清除屏幕上對象所在范圍的內容,窗體也適用,若已存在內存里的內容,則無法消除,用法:Object.Cls,范例在上面的畫圓范例里。
●Point方法:Point就是讀取PictureBox某一點上的顏色數值,傳回值是長整數型態(tài),在窗體上也適用,用法:傳回值 = Object.Point。
Private Sub Picture1 ●AutoRedraw屬性:上面的PSet、Line、Circle是VB所提供的,畫圖在屏幕上的方法,因此只要對象移出屏幕外,或是對象被其它窗口或對象給蓋著,剛才所畫的圖會不件,若在繪圖時,把AutoRedraw設為True,則可把圖繪入內存,即使用Cls方法也清除不掉,范例在上面的畫圓范例里頭。
●想要把用VB函數在PictureBox里所畫的圖給存起來時(把AutoRedraw設為True時所繪的圖才能存盤),VB提供了SavePicture方法,用法是SavePicture Object.Picture, 檔名。
Private Sub Command1_Click()
SavePicture Picture1.Picture, "C:\Windows\Temp\Tmp.Bmp"
End Sub
●SavePicture只能存BMP格式的檔按,請別異想天開把擴展名改成JPG或GIF,存起來的圖仍是BMP格式的圖。
●PaintPicture方法:PaintPicture方法,可以把某個物計內的圖轉貼到另一個物件上,但要有一個前題,這個圖是用Picture屬性加載進來的圖才可以,用法Object.PaintPicture 來源對象.Picture, Object.X, Object.Y, 圖在Object上的寬度, 圖在Object上的高度, 來源對象X起始位置, 來源對象起始Y位置, 來源對象上的寬度, 來源對象上的高度, 貼圖模式
Private Sub Command1_Click()
Picture1.PaintPicture Picture2.Picture, 0, 0
'原尺寸轉印
End Sub
●若是改變了圖在Object上的寬與高,可以改變圖形的縮放 Private Sub Command1_Click()
Picture1.PaintPicture Picture2.Picture, 0, 0, 750, 600
End Sub
●Picture2內的圖被放大轉貼到Picture1里。
●至于貼圖模式,留在其單元里的特殊功能里討論
●Print方法:Print可以在PictureBox上打印文字,窗體也適用,用法:Object.Print 資料。
Private Sub Command1_Click()
MyLng = 1234567
Picture1.Print "今天天氣真好"
Picture1.Print "MyLng = " & MyLng
End Sub
●CurrentX與CurrentY屬性,設定或傳回目前PictureBox上畫筆所在的位置,窗體也適用。
Private Sub Command1_Click()
Picture1.CurrentX = 500
Picture1.CurrentY = 350
Picture1.Print "今天天氣真好"
End Sub