VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 实现图像切换效果
发表评论(0)作者:, 平台:, 阅读:14366, 日期:2000-03-12
实现图像切换效果

刘九七

PaintPicture是自VB4以后新提供的图形图像处理方法,它的基本功能是图像

块传输,在以前的VB版本中要产生块传输效果,需采用WindowsGDI中的块传输函数

BitBltAPI调用。PaintPicture正是VB中用来代替BitBltAPI调用的简单而方便的方

法。它能快速地将两幅位图进行合并;能将位图的全部或某一部分快速剪切并粘贴

到其它地方;并能将位图自动延伸或压缩以适应新的环境;能在屏幕上不同位置之

间、屏幕与内存之间传递位图;它采用32位三元光栅操作代码(ROP),在源位图、

选定的刷子位图和目标位图之间进行颜色组合,生成目标位图中的最终颜色,它将

13个常用的ROPR操作以内部常量形式给出,不需任何声明,不用理会其32位参数值。

基本格式:

Object.PaintPicturepicture,x1,y1,width1,height1,x2,y2,Width2,

height2,opcode


其中Object可以为窗体或PictureBox控件Picture可以为BMP、Dib、Ico、Wmf、

Emf等格式的图片

  X1、Y1、Width1、height1为目标位图的参数

  X2、Y2、Width2、height2为源位图的参数

 opcode表示源图与目标位图(或刷子位图)的组合关系,该参数与BitBlt中

dwRop参数含义相同。

  VB4为opcode定义了13个内部常量:

  vbDstInvert:目标位图取反

  vbSrcCopy:源位图直接覆盖目标位图

  vbSrcAnd:源位图与目标位图进行“与”操作

 ?bSrcInvert:源位图与目标位图进行“异或”操作

  vbSrcPaint:源位图与目标位图进行“或”操作

  vbNotSrcCopy:源位图取反

  vbSrcErase:目标位图取反,再与源位图进行“与”操作

  vbNotSrcErase:源位图与目标位图进行“或非”操作

  vbMergePaint:源位图取反,再与目标位图进行“或”操作

  此外,与刷子位图有关的常量是vbMergeCopy、vbPat?Copy、vbPatInvert和

vbPatPaint,这13个内部常量可以在菜单View/ObjectBrowser/VB-

VisualBasicobjectsandproce?dures/RasterOpConstants中列出。

  巧用PainPicture方法,结合控件属性,可以方便地产生许多常见的图像切换

效果,如我们在多媒体作品及电视中常见的图像旋转引入、翻转、飞入、滑入、弹

出、淡入淡出、隐现等动画效果。

举例:图像滑入(Wipe)效果的实现

  在滑入效果中,新图像慢慢逐渐覆盖旧图像,就象在墙上展于一幅卷成筒状的

画。

  1.缺省窗体Form1

  2.Form1上置PictureBox1、PictureBox2两大小相同的图片控件及Timer时钟

控件PictureBox1中安装源图,在Pic?tureBox2中展开PictureBox1中的图像

  3.编程

  Private Sub FormμLoad()

  Picture1.ScaleModeΚPixel

  Picture2.ScaleModeΚPixe1

  hΚ0

  tΚ2

  EndSUb


  PrivateSubTimerμTimer()

  IfhΙΚPicture1.ScaleHeightThen

  Picture2.PaintPicturePicture1.Picture,0,h,Picture2.ScaleWidth,

t,0,h,Picture1.ScaleWid

th,t,vbSrcCopy

  hΚh+t

  EndIf

  EndSub