网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Basic/VB类-> 用Visual Basic6.0实现电影特效

用Visual Basic6.0实现电影特效
作者:佚名 来源:InterNet 加入时间:2005-1-28
相关文章
  • 在Visual Basic 6.0 中创建Word文档
  • Visual Basic代码优化的六条军规
  • 利用Visual Basic操作XML数据
  • Visual Basic小游戏:猜英雄
  • 相关书籍:
  • Visual Basic 6.0应用编程150例
  • Visual Basic 6.0 控件参考手册
  • VISUAL BASIC 5 开发WEB数据库指南
  • COOL系列之Visual Basic 6.0+Visual C++ 6.0
  • Visual Basic 语言参考-函数速查
  • Visual Basic 6中文版循序渐进教程
  • Visual Basic 6.0中文版语言参考手册
  • Visual Basic 6.0中文版范例入门与提高
  • Visual Basic 6.0中文版程序员指南
  • Visual Basic 6.0 Component Tools Guide组件
  • 电影或电视中经常可见到一些字幕或图片的动态变化特技,在制作多媒体教学软件或广告宣传等多媒体演示文档时,也常常需要用到一些图文的动态变化效果。VB6.0作为Windows软件的强有力开发工具,在多媒体程序设计方面具有广阔的应用前景。本文讨论运用VB6.0的定时器并结合Windows API函数实现图片或文字的动态缩放和渐隐渐现等特技效果。

      一、实现图文动态缩放和渐隐渐现特效的程序方法

      1、程序界面

      取窗体名为Form1,其Windowstate属性设为2。在窗体Form1中设置如下控件和属性:一个标签控件Label1,其backcolor等于form1的backcolor; bondstyle为0, Autosize为True。一个图像控件image1,其Stratch和Visible均为True ; Bordstyle为0。两个图片框控件Picture1和Picture2, Visible属性Picture1为False而Picture2为True; AutoRedraw属性Picture1为True而Picture为False; ScaleModel属性两者均为Pixels; Bondstyle属性两者均为0。三个定时器控件Timer1,Timer2和Tirner3;命令按钮控件数组cmd(0),......,Cmd(4),其caption属性分别为:“文字缩放”、“图片缩放”、“文字隐现”、“图片隐现”和“退出”。

      2、文字的动态缩放 

      通过VB6.0的定时器控件定时改变文字的Size属性,就可达到文字被动态放大或缩小的效果。程序中通过timer1的tuner过程来控制标签Label1的caption属性文字大小。由cmd(0)触发的cmd_click事件引发timer1_ time过程,通过一逻辑变量1(0)(数组元素)控制文字的变化方式,1(0) = true 时使字体动态放大,1(0) = false时使字体动态缩小。

      3、图形的动态缩放

      将图像控件image1的stretch属性设为true,可实现控件中图片大小随imagel控件大小的变化而变化。通过定时器timer2的tuner过程定时改变imagel控件的尺寸大小,就达到了使图片动态缩放的效果。由cmd(1)触发的cmd_click事件将引发timer2_time过程,通过逻辑变量1(1)控制图片变化的方式,1(1)=true时控制图片动态放大,1(1)=false时控制图片动态缩小。

      4、文字的渐隐渐现效果

      从字符串中取若干个文字作为标签Label1的caption值,如果从字串中截取的文字数递增(直到等于字串的全部字数),则实现文字渐现效果;而截取的文字如果递减(从字串的全部字数减到0),则实现文字渐隐效果。通过定时器timer3的time:过程定时改变截取的字数,来达到此效果。由cmd(2)触发的。md_click事件引发timer3 _time过程,通过逻辑变量1(2)控制文字变化的方式,1(2)=true时使文字渐现,1(2)=false时使文字渐隐。

      5、图形的渐隐渐现效果

      用Windows API函数BitBlt复制图片的方法实现。BitBlt函数的使用方法为:

    BitBlt hDestDC, x, y, nWidth, nHeight, hSrcDC, xSrc, ySrc,dwRop

      其中各参数的含义为:hDestDC和hSrcDC分别表示目标设备描述表句柄和源设备描述表句柄。即要把图片从hSrcDC复制到hDestDC。Picturellox控件的hDC属性就是我们要用到的设备描述表句柄。x, Y表示目标中左上角的位置,nWidth, nHeight表示目标中的宽和高。即要把图片复制到目标设备描述表中的什么位置,以及复制多宽和多高。xsrc和ySrc表示源图片中的左上角位置,即表示从什么位置开始复制。DwRop参数表示一种绘制方式,常用直接复制方式,这时就取SRCCOPY。

      二、实现图文动态缩放和渐隐渐现特效的程序代码

    ‘对全局变量和API函数的通用声明(API函数Sleep, BitBlt及其常参数SRCCOPY的声明从略,可从API浏览器中复制、粘贴):
    Dim 1(4) As Boolean, i as Long, s As String, zt As Integer
    ‘实现图片渐现渐隐的通用过程:
    Private Sub PicCpy(Optional strip As Integer=10, Optional delay As Integer=20)
     Dim plw As Integer, plh As Integer,p2 As Integer
     If 1(3)=True Then
      Picture1 = LoadPicture("c:\win98\安装程序.bmp")
     Else
      Picture1=LoadPicture("")
     End If
     plw = Picturel.Width
     plh=Picturel.Height
     p2=0
     Do While p2<= plw
      BitBlt Picture2.hDC,p2,0, strip, plh, Picture1.hDC,p2,0,SRCCOPY
      p2=p2 + strip
      Sleep delay
      DoEvents
     Loop‘由于图片宽度不一定是strip的整数倍,故下面再全图复制一遍图片:
     BitBlt Picture2.hDC,0,0,plw,plh,Picture1.hDC,0,0,SRCCOPY
    End Sub

    Private Sub Form_load()
     Label1.Font.Name="黑体"
     Image1.Top=0
     Image1.Left=0
     Picture2.Top=0
     Picture2.Left=Screen.Width - Picthne2.Width
     s="产生缩放和隐现效果的文字"
     zt=5'zt为字体大小控制变量
     i=0 'i为显示文字时截取文字的字数变量
    End Sub

    Private Sub Cmd_Click (Index As Integer)
     If 1(Index)=True Then
      1(Index)=False
     Else
      1(Idex) = True
     End If
     Select Case Index
      Case 0 '激活timer1的timer过程
       Timer1.Enabled=True
       Timer1.Interval=50
       ...... 'Case1, 2与上述类似,分别激活timer2, timer3的timer过程
      Case 3 '调用图片复制过程Piccpy

       PiCpy 10, 50
      Case 4‘结束程序运行
       Unload Me
       End
     End Select
    End Sub
    Private Sub Timer1_Timer() '实现文字缩放的过程
     If 1(0)=Trun Then
      zt=zt<+5
     Else
      Zt=Zt-5
     Else If
      If zt>50 or zt<=5 Then
       Timer1.Enabled=False
      End If
      With Label1
       .Font.Size=zt
       .Left=(Form1.Width - Lable1.Width) /2
       .Top=(Form1.Height - Label1.Height)/2
      End With
      Label1.Caption=s
    End Sub

    Private Sub Timer2_Timer() '实现图片缩放的过程
     If 1(1)=True Then '使图片放大
      Image1.Width=Image1.Width+Form1.Width/10
      Image1.Height=Image1.Height+Form1.Height/10
     Else '使图片缩小
      Image1.Width=Image1.Width - Form1.Width/10
      Image1.Height=Image1.Height - Form1.Height/10
     End If
     If (Image1.Width >=Form1.Width/2) or (Image1.Width <=Form1.Width/10) Then
      Timer2.Enabled=False
     End If
      Image1=LoadPicture("c:\win98\安装程序.bmp")
     End Sub

    Private Sub Timer3.Timer()
     Label1.Font.Size = 30
     If 1(2)=True Then
      i=i+l
     Else
      i=i一1
     End If
     If i >=Len(s) on i<1 Then
      Timer3.Enabled=False
     End If
     If i >=0 Then
      Label1.Caption=Left$(s,i)
     End If
    End Sub

      以上程序在VB6.0和Windows98/2000环境下调试通过。

    [文章录入员:nancy]

    相关文章
  • 在Visual Basic 6.0 中创建Word文档
  • Visual Basic代码优化的六条军规
  • 利用Visual Basic操作XML数据
  • Visual Basic小游戏:猜英雄
  • 相关书籍:
  • Visual Basic 6.0应用编程150例
  • Visual Basic 6.0 控件参考手册
  • VISUAL BASIC 5 开发WEB数据库指南
  • COOL系列之Visual Basic 6.0+Visual C++ 6.0
  • Visual Basic 语言参考-函数速查
  • Visual Basic 6中文版循序渐进教程
  • Visual Basic 6.0中文版语言参考手册
  • Visual Basic 6.0中文版范例入门与提高
  • Visual Basic 6.0中文版程序员指南
  • Visual Basic 6.0 Component Tools Guide组件
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Basic/VB类
    C/C++/VC
    C++Builder
    Basic/VB类
    Delphi/Pascal
    Java编程
    FORTRAN
    其它
    电脑教程阅读排行
    ·VB学习一点通
    ·VB设计动画时钟
    ·在Visual Basic 6....
    · 用VB6.0编写手机短信发送 ...
    ·VB实现文件数据对SQL Ser...
    ·利用Visual Basic操作...
    ·VB实现图像在数据库的存储与显示
    ·用Visual Basic6.0...
    ·Visual Basic代码优化...
    · VB中实现“无标题”窗体的移动...