[Visual Basic 6.0] 利用 Picture 的 Point 與 Image 的 Stretch、SavePicture 實作圖片切割

摘要:[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

圖片切割存檔教學.rar

#0xDe 從分享中學習

#Facebook:ProgrammerDe (https://www.facebook.com/MicrosoftDes) 有問題歡迎提問