在VB中提供了完善的做圖方法, 可以在窗體或圖形框中繪制各種圖形, 其中提供了一個(gè)方便的圖像處理命令即:PaintPicture, 此命令的功能與WINDOWS API 函數(shù)BitBlt類似,但由于不用做API函數(shù)說明,并且有它獨(dú)特的功能,所以更有它的方便之處, 使用它可以完成很多圖像的特殊處理工作。
一、語法格式:
PaintPicture Pic,destX,destY,destWidth,destHeight,scrX,scrY,scrWidth,scrHeight
其中Pic:為圖片對(duì)象, 如圖形框Picture等;
destX,destY:目標(biāo)圖像位置;
destWidth,destHeight:目標(biāo)圖像尺寸;
scrX,scrY:原圖像的裁剪坐標(biāo);
scrWidth,scrHeight:原圖像的裁剪尺寸;
從以上格式可以看出,此命令的功能就是把一個(gè)源圖像資源任意復(fù)制到指定的區(qū)域,并且通過改變參數(shù)destWidth與destHeight值,還可以改變復(fù)制后的圖像的尺寸,實(shí)現(xiàn)放大或縮小圖像顯示, 甚至可以置這兩個(gè)屬性為負(fù)值, 這樣可使目標(biāo)圖像在水平方向翻轉(zhuǎn),實(shí)現(xiàn)特殊效果的圖像顯示。
二、應(yīng)用舉例
1.墻紙的制作
所謂的墻紙, 就是用一個(gè)小尺寸的圖像連續(xù)在一個(gè)區(qū)域顯示, 形成規(guī)則的重復(fù)圖像, 也稱為圖像的平鋪顯示,利用“PaintPicture"命令可以方便的完成此工作, 即用一個(gè)固定的圖像資源多次連續(xù)復(fù)制到窗口中; 復(fù)制過程中必須準(zhǔn)確計(jì)算下一圖像的起始位置; 顯示過程中可采取兩種方法, 第一種方法可置源圖像資源即圖形框的AutoSize屬性為真, 并且顯示過程中按源圖像的實(shí)際尺寸復(fù)制, 這是正常的圖像平鋪顯示; 還有一種方法就是通過置AutoSize屬性為假, 然后改變圖形框的尺寸, 或者直接修改目標(biāo)圖像的尺寸, 這樣可實(shí)現(xiàn)放大或縮小圖像的平鋪顯示。具體作方法請(qǐng)見Command1_Click()事件中的代碼。
2.隨機(jī)圖像顯示
隨機(jī)圖像在一定場合具有特殊的魅力,比如把一個(gè)固定的圖像連續(xù)的在某一區(qū)域中的隨機(jī)位置顯示,這樣即可得到一種特殊的屏幕效果,具體操作時(shí)需要使用VB的內(nèi)部函數(shù)RND, 此函數(shù)可產(chǎn)生0-1之間的隨機(jī)數(shù), 通過此隨機(jī)數(shù)確定顯示的圖像的位置即destX與destY參數(shù), 這樣即可使圖像在隨機(jī)位置顯示, 通過此原理也可以使圖像的尺寸等其它參數(shù)隨機(jī)產(chǎn)生, 以產(chǎn)生其它效果的隨機(jī)圖像效果。具體操作方法請(qǐng)見Command2_Click()事件中的代碼。
3.鏡頭推出效果
鏡頭推出效果實(shí)際上就是圖像的放大或縮小顯示, 利用“PaintPicture"命令實(shí)現(xiàn)此功能,只需要改變destWidth及destHeight參數(shù)即可, 具體操作時(shí)需要注意保持圖像的中心點(diǎn)不變, 在圖像的放大或縮小過程中同時(shí)改變圖像的起始坐標(biāo)。此命令的圖像顯示速度不低于API函數(shù)的BitBlt命令, 圖像放大或縮小過程中基本沒有抖動(dòng)的感覺。具體操作方法請(qǐng)見Command3_Click()事件中的代碼。
4.拖尾效果的形成
此效果的形成與圖像的放大過程基本相似,區(qū)別在于無需保持中心點(diǎn)不變,而在圖像的放大過程中,向一個(gè)方向逐漸改變圖像的起始位置,并且起始的圖像尺寸置為0,這樣當(dāng)圖像放大顯示到一定位置時(shí),其后面就留下了多彩的拖尾效果。具體操作方法請(qǐng)見Command4_Click()事件中的代碼。
三、演示程序
文后的程序完整的演示了上述各種圖像的特殊處理效果,編程需要在From1窗體中安放兩個(gè)圖形框Picture1 及Picture2, 還有五個(gè)命令按鈕Command1-Command5,之后把下述代碼填入相應(yīng)的事件中, 運(yùn)行程序后通過按鈕1-4即可演示上述的四種圖像處理效果, 按"退出"按鈕則結(jié)束程序。以上方法及程序在WINDOWS95系統(tǒng)、VB4.0環(huán)境下調(diào)試通過。
圖像平鋪顯示
Private Sub Command1_Click()
Dim numm As Integer
Picture1.AutoSize = True
roww = Int(Form1.Width / Picture1.Width) + 1
coll = Int(Form1.Height / Picture1.Height) + 1
For i = 0 To roww
For j = 0 To coll
Form1.PaintPicture Picture1.Picture,j*Picture1.Width,i*Picture1.Height,Picture1.Width,Picture1.Height
numm = numm + 1
Form1.Caption = "使用圖像個(gè)數(shù):" + Str$(numm)
Next j
Next i
Picture1.Visible = 0
End Sub
隨機(jī)圖像顯示
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問:考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |