VB6.0載入圖檔自動排列
|
可以使用兩個 PictureBox 加 圖形處理 API函數
(假設一個是目的 TPictureBox 一個是用來載入用的SPictureBox,所以 SPictureBox之 .Visible可以設為隱藏 =False) 一般常用的圖形處理 API函數有 BitBlt (宣告如下) 語法:
Public Declare Function BitBlt Lib "gdi32" ( _ 語法:
Public Declare Function StretchBlt Lib "gdi32" ( _ 語法:
StretchBlt TPictureBox.hDC, X, Y, W, H, SPictureBox.hDC, 0, 0, SPictureBox.ScaleWidth, SPictureBox.ScaleHeight, SRCCOPY 常用的如下 語法:
Public Const SRCCOPY = &HCC0020 '(DWORD) dest = source 至於如何實現你的例子 主要在於控制 X及Y座標 (這裡請自己想吧) 提示1: X=X+SPictureBox.ScaleWidth Y=Y+SPictureBox.ScaleHeight 使用兩層For迴圈 提示2: '先載入圖檔 SPictureBox.Picture=LoadPicture(FileName) '這裡加入控制 X及Y座標,最後再使用 ※A式 將來源圖(SPictureBox)複製到 目的(TPictureBox)上 提示3: 其他相關屬性 SPictureBox.AutoSize = True SPictureBox.AutoRedraw = True SPictureBox.ScaleMode = 3 '像素 |
感謝版大詳細指點,我需求很簡單,載入圖片後自動排列好後就另存新檔了,不需要可以拉動圖片等功能,x,y軸的部份我會再想想,謝謝。
|
版大,您那個方法對我來說可能太深奧了點,我試不出來,想請教一下,我可不可以在picturebox裡拉八個image排列好,然後下
for i=0 to 7 image1.picture=loadpicture(commonDialog1.FileName) next i 但它好像還是只載入一張而已,不知道那裡出了問題?謝謝。 |
版大,您那個方法對我來說可能太深奧了點,我試不出來,想請教一下,我可不可以在picturebox裡拉八個image排列好,然後下
語法:
for i=0 to 7 |
剛才使用了Image實現了我想要的動作,但現在問題來了,我做了八個Image分別命名為Image1(0)~Image(7),但不知道該怎麼將這八格內的圖通通存在一個jpg檔內?謝謝。
|
引用:
當然結果就是如此 如果你的 image 0~7是用 陣列方式生成 那可改成 語法:
for i=0 to 7 引用:
因為你用八個Image卻要拼成一張圖 雖然不是不可能 但個人不會 ... 如果一開始是印在一個pictureBox上 那存檔就很容易了 其實不會很難只要你拿一張紙 在上面大改畫出你要的版面 就可以很容易搞清楚座標的方程式了 因為你也沒有詳細講出你的專案條件 (比如 載入的圖是固定8張嗎?) 所以才只能點到為止 個人寫程式比較懶 (以前學校教:是要你畫流程圖,軟體寫好玩的畢業後誰管你這麼多...) 都是用腦子迴響式邏輯,想到什麼就加什麼 所以時常碰到死胡同 此時只要拿一張紙畫一畫通常就可走出胡同 (雖然畫出的結果不一定是對的) 所以你可以試試 |
以下是隨手做的 (右邊的SPictureBox本來是隱藏的,為了展示所以Visible設為 True)
(由圖可看出 StretchBlt 的縮放效果不佳...^^") 語法:
Private Sub Command1_Click() |
引用:
片這麼大,載入一張後我想自動排列成您下面做好的八張的樣式,然 後可以存檔,就如此而已,謝謝。 |
順便問一下mini大大要如何知道每一行已經有四張圖片而自動換行?
|
引用:
編號 0~7 那 編號3 就是 第四張圖 其實如果考量每張圖可能 長寬size不同的話 程式碼還有很大的改良空間 |
對ㄚ大大如果圖片尺寸不同就很麻煩了~~~呵呵~~
|
所有時間均為台北時間。現在的時間是 09:20 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *