在VB6中實現圖像的變換
發表于:2007-07-14來源:作者:點擊數:
標簽:
文/黃艷秋 Visual Basic 6.0(簡稱 VB 6)是微軟公司推出的當前世界上最流行的可視化編程工具,特別在 數據庫 及多媒體 開發 方面的強大支持與改進,使我們能輕松地開發出各種功能極強的數據庫及多媒體應用程序。下面介紹的是在多媒體應用中圖像變換技術的“馬
文/黃艷秋
Visual Basic 6.0(簡稱
VB6)是微軟公司推出的當前世界上最流行的可視化編程工具,特別在
數據庫及多媒體
開發方面的強大支持與改進,使我們能輕松地開發出各種功能極強的數據庫及多媒體應用程序。下面介紹的是在多媒體應用中圖像變換技術的“馬賽克”效果實例。
實現過程及效果
“馬賽克”效果主要是用方塊填充某一圖像框,從而得到“馬賽克”效果。先在窗體中繪制兩個圖像框,將圖像載入一圖像框中,同時將另一個圖像框設為空白,然后調用API函數BitBlt將左框中的圖像按照一定的順序以方塊為單位復制到右框中,就可以實現“馬賽克”的動態圖像效果。
實現步驟
1、窗體中加入兩個圖像框Picture1和Picture2,兩個命令按鈕Command1和Command2;
2、載入窗體同時,在Picture1中載入圖片;
3、在Command1_Click事件中調用BitBlt函數和Sleep函數。
程序代碼及注釋
Private Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
然后,就對API函數‘BitBlt進行聲明。
Const copy_put = &&H
CC0020
Sub Form_Load()
Picture1.Picture = LoadPicture("c:My Documentsm7.bmp")‘載入圖像
Picture1.ScaleMode = 3‘像素單位
End Sub
Private Sub Command1_Click()
Picture2.Cls‘設為空白
h% = Picture1.ScaleHeight‘圖像高度
w% = Picture1.ScaleWidth‘圖像寬度
changwidth = 15‘方塊的寬度
changheight = 15‘方塊高度
For i = 0 To w% Step changwidth * 2‘水平軸錯開表示圖像
For j = 0 To h% Step changheight * 2
x = DoEvents()
s% = BitBlt(Picture2.hDC, i, j, changwidth, changheight, Picture1.hDC, i, j, copy_put)‘調用BitBlt
Sleep (100)‘延時
Next j
Next i
For i = changwidth To w% Step changwidth * 2
For j = chang-
height To h% Step changheight * 2
x = DoEvents()
s% = BitBlt(Picture2.hDC, i, j, changwidth, changheight, Picture1.hDC, i, j, copy_put)
Sleep (100)
Next j
Next i
For i = 0 To w% Step changwidth * 2
For j = changheight To h% Step changheight * 2
x = DoEvents()
s% = BitBlt(Picture2.hDC, i, j, changwidth, changheight, Picture1.hDC, i, j, copy_put)
Sleep (100)
Next j
Next I
For i = changwidth To w% Step changwidth * 2
For j = 0 To h% Step changheight * 2
x = DoEvents()
s% = BitBlt(Picture2.hDC, i, j, changwidth, changheight, Picture1.hDC, i, j, copy_put)
Sleep (100)
Next j
Next I
End Sub
Private Sub Command2_Click()
End
End Sub
原文轉自:http://www.anti-gravitydesign.com