VB中实现图像特技(1)

叫我何墨墨

叫我何墨墨

2016-02-19 16:33

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享VB中实现图像特技(1)吧。
在多媒体程序设计中,为了美化显示屏幕,增加画面的动感,常常要用天各种图像显示特技。图像的切换技术能明显美化画面。用VisualBasic编制这类程序时,由于VB自身没有这种切换功能,因此需要利用第三方控件或调用WindowsAPI函数BitBlt来实现这种功能。本文介绍用BitBlt函数实现画面的各种切换方法,供大家参考。
  假设有5个图像文件(Picture1-Picture5),我们的目标是让这5幅画自动地循环显示,每幅画以某种切换方式出现,当有击鼠标动作时退出程序。
  1创建项目文件:
  运行VB,建立一个新工程文件Project1,加入一个新的Form名称为Form1,和一个模块文件Modull,在Form1中加入一个图画框Picture1和一个定时器Timer1。
  设置各控件的属性如下:
  Form1:AutoRedraw:True
  ScaleMode:3
  Picture1:AutoRedraw:True
  ScaleMode:3
  Visible:False
  2代码编写
  Modull.bas中的内容(声明BitBlt函数):
  PublicConstSRCCOPY=&HCC0020'(DWORD)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 ''mp1.bmp''bmpfile(1)=App.Path ''mp2.bmp''
  bmpfile(2)=App.Path ''mp3.bmp''
  bmpfile(3)=App.Path ''mp4.bmp''
  bmpfile(4)=App.Path ''mp5.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->

展开更多 50%)
分享

猜你喜欢

VB中实现图像特技(1)

编程语言 网络编程
VB中实现图像特技(1)

VB中实现图像特技(2)

编程语言 网络编程
VB中实现图像特技(2)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用CB实现图像的特技显示

编程语言 网络编程
用CB实现图像的特技显示

VB中随机图像的魅力

编程语言 网络编程
VB中随机图像的魅力

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何实现VB中打开图像文件时的预览功能

编程语言 网络编程
如何实现VB中打开图像文件时的预览功能

VB图像处理之几个常用滤镜的实现

编程语言 网络编程
VB图像处理之几个常用滤镜的实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用文件的默认的打开方式

使用文件的默认的打开方式

如何在rhel6.3上安装配置Apache

如何在rhel6.3上安装配置Apache
下拉加载更多内容 ↓