国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB中實現圖像特技(1)

2019-11-18 17:38:26
字體:
來源:轉載
供稿:網友
在多媒體程序設計中,為了美化顯示屏幕,增加畫面的動感,常常要用天各種圖像顯示特技。圖像的切換技術能明顯美化畫面。用VisualBasic編制這類程序時,由于VB自身沒有這種切換功能,因此需要利用第三方控件或調用WindowsAPI函數BitBlt來實現這種功能。本文介紹用BitBlt函數實現畫面的各種切換方法,供大家參考。
假設有5個圖像文件(Picture1-Picture5),我們的目標是讓這5幅畫自動地循環顯示,每幅畫以某種切換方式出現,當有擊鼠標動作時退出程序。
1創建項目文件:
運行VB,建立一個新工程文件Word)dest=source
DeclareFunctionBitBltLib"gdi32"Alias"BitBlt"(ByValhDestDCAsLongByValxAsLongByValyAsLongByValnWidthAsLongByValnHeightAsLongByValhSrcDCAsLongByValxSrcAsLongByValySrcAsLongByValdwRopAsLong)AsLong
這兩句只要從Win32api.txt文件中粘貼即可。
Form1中的代碼:
在Declare中定義全局變量:
Constbmpfilemax=5&總共5個bmp文件
Dimbmpfile(bmpfilemax)AsString&bmp文件的文件名數組
Dimdrawbmpmode(bmpfilemax)AsInteger&各畫顯示時的切換方式
Dimbmpnum,movestep,xmax,ymaxAsInteger
DimkxyAsSingle&x,y二個方向的比例
程序運行時先作初始化工作:
PrivateSubForm-Load()
bmpnum=0&當前文件號=0,第一個文件
bmpfile(0)=App.Path ''/bmp1.bmp''bmpfile(1)=App.Path ''/bmp2.bmp''
bmpfile(2)=App.Path ''/bmp3.bmp''
bmpfile(3)=App.Path ''/bmp4.bmp''
bmpfile(4)=App.Path ''/bmp5.bmp''
drawbmpmode(0)=1
drawbmpmode(1)=5
drawbmpmode(2)=3
drawbmpmode(3)=4
drawbmpmode(4)=2
movestep=0&步進參數
xmax=Form.ScaleWidth/2
ymax=Form.ScaleHeight/2
kxy=ymax/xmax
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
Timer1.Interval=30&定時器起動
EndSub
響應鼠標:

PrivateSubForm-Click()
End&當有擊鼠標動作時程序結束
EndSub

切換演示工作主要在定時器中完成:
PrivateSubTimer1-Timer()
hDestDC=Form1.HDC&目標DC
hSrcDC=Picture1.hDC&源DC,畫是從不可見的Picture1中拷貝到窗體
drawflag=drawbmpmode(bmpnum)&當前畫出現的方式
SelectCasedrawflag
Case1&從中間逐步放大
endmax=xmax&用于結束判斷
X1=xmax-movestep
w=movestep*2
Y1=Cint(ymax-movestep*kxy)
h=Cint(2*movestep*kxy)
i=BitBlt(hDestDC,X1,Y1,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case2&從左到右
endmax=xmax
w=movestep*2
h=Form1.ScaleHeight
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,X1,Y1,SRCCOPY)

Case3'左右向中間
endmax=xmax
w=movestep
h=Form1.ScaleHeight
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,0,0,SRCCOPY)&左面部分
X1=Form1.ScaleWidth-movestep
50,0)
  Picture1.Cls
  Do
  m=Rnd*Picture1.ScaleWidth
  n=Rnd*Picture1.ScaleHeight-500
  Fori=0ToRnd*800
  Picture1.Line(m,n+2.5*i)-(m+i/2,n+2*i),RGB(180,180,180)
  Picture1.Line(m,n+2.5*i)-(m-i/2,n+2*i),RGB(80,80,80)
  Nexti
  DoEvents
  Loop
  EndSub
  ′結束程序
  PrivateSubCommand3-Click()
  End
  EndSub->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 谢通门县| 阳江市| 凤庆县| 民权县| 曲松县| 台北市| 昌黎县| 永川市| 分宜县| 栖霞市| 怀来县| 淮南市| 松滋市| 武强县| 崇州市| 蒙自县| 贺兰县| 黔南| 临夏县| 故城县| 衡阳县| 界首市| 格尔木市| 肥西县| 屯昌县| 威宁| 资溪县| 明水县| 修文县| 瑞安市| 孝感市| 新昌县| 厦门市| 遂宁市| 巴林右旗| 宝清县| 泸定县| 张北县| 临汾市| 龙山县| 平武县|