2007-10-25 23:37:23 Kenny

自行繪圖的存檔/非Bitmap圖存成Bitmap圖



來源:cww

如果我們使用繪圖指令在PictureBox上畫圖,要將之存檔,那便得使用Image這個屬性來
做,Image屬性存的是在Memory中的那一份BitMap圖,我們使用 AutoRedraw = true
使得在PictureBox上的繪圖都在該Image上,最後才使用Refresh將之顯示到前景。

Private Sub Command2_Click()
Picture1.AutoRedraw = True  '設定繪圖指令在背景圖(image,即在Memory中)生效
Picture1.ScaleMode = 3
Picture1.Line (0, 0)-(10, 50)
'其他繪圖指令
Picture1.Refresh
SavePicture Picture1.Image, "e:\t5.bmp" '將Image存檔成t5.bmp
End Sub

而我們又如何將非Bitmap圖存成Bitmap圖呢?其原理相同,我們使用LoadPicture
讀取icon圖,此時Picture屬性是指向一個.ico的物件(由Picture.Type= 3可得知),
但是Image呢,它仍是在記憶體中的一個BitMap圖,這由image.Type = 1可得知。
其他種類的圖亦如是。

Private Sub Command2_Click()
Picture2.AutoSize = True
Set Picture2.Picture = LoadPicture("e:\client.ico")
Debug.Print Picture2.Picture.Type; Picture2.Image.Type
'可得 3  1 故知Picture存的是.ico型態的圖,而Image是存Bitmap圖
SavePicture Picture2.Image, "e:\t4.bmp"
End Sub