摘要:[Visual Basic 6.0] 利用 Picture 的 Point 與 Image 的 Stretch、SavePicture 實作圖片切割
[Visual Basic 6.0] 利用 Picture 的 Point 與 Image 的 Stretch、SavePicture 實作圖片切割
Q1: 為什麼需要同時用到 Picture 跟 Image 不是只需要單單一個 Picture 或 Image 就可以了嗎?
A1: 因為在 VB6.0 下 Point 指令只適用於 Picture 下、而 Stretch 則只能用在 Image 下。為了相互補足對方的缺失(?)所以將它們兩個結合達到完美效果。
※ 說明:
PictureBox 控制項的Point 方法可用來為指定點的像素傳回色彩值
Image 控制項的Stretch方法可用來決定圖片與物件大小作自動調整
首先我們看看實做效果:
1.載入圖片
2.處理切割
3.匯出圖片
皆下來就是 Code 了!
' 第一步 在表單上放一個 Picture (必須設置好 Height 跟 Width 為正方形 => Height = Width)
' 第二部 在表單上拉一個 Image ( 先在 Picture "內部" 拉一個Image物件,之後將屬性 Height 與 Width 設跟 Picture 的一樣 )
' 第三部 將 Image 的 Stretch 屬性設為 True ( 讓載入的圖片可以完整顯示於畫面中,Picture 無此屬性 )
' ( 說明 因為 Picture 有 Point 抓RGB顏色的指令而 Image 沒有,而 Image 可以設定屬性讓圖片為完整畫面而 Picture 無法。 )
' 第四步 之後在表單上新增要配置切割的 Picture 位置。 ( 範例用 Picture2(陣列) 表示自行參閱 )
Private Sub Command1_Click()
PictureX = 0
PictureY = 0
For I = 0 To 1 ' 兩個輸出
For X = 0 To 1500 Step 15 ' 因為要輸出兩個為左右放置 所以 X軸是總長 / 2 ( Step 越小越精密,但速度較慢 )
For Y = 0 To 3000 Step 15 ' 因為要輸出兩個為上下一樣 所以 Y軸是總長 ( Step 越小越精密,但速度較慢 )
Picture2(I).PSet (X, Y), Picture1.Point(X + PictureX, Y + PictureY)
Next Y
Next X
PictureX = PictureX + 1500
PictureY = PictureY + 0
Next I
' PictureX , PictureY 為輔助用,自己用腦想想看,一張圖片要切割成兩張圖片,
' 切割後第一張的 X,Y 軸分別是從主照片的 X,Y 軸哪裡 - 哪裡
' 切割後第二張的 X,Y 軸分別是從主照片的 X,Y 軸哪裡 - 哪裡
End Sub
Private Sub Command2_Click()
For I = 0 To 1 ' 兩個輸出
Picture2(I).AutoRedraw = True ' 這樣才能正確輸出
SavePicture Picture2(I).Image, App.Path & "/" & I & ".JPG"
' 儲存圖片指令 = SavePicture 圖片.Image , 路徑
Next I
End Sub
最後就是 Project
#0xDe 從分享中學習
#Facebook:ProgrammerDe (https://www.facebook.com/MicrosoftDes) 有問題歡迎提問