学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> 用Visual Basic6.0实现电影特效


用Visual Basic6.0实现电影特效


  电影或电视中经常可见到一些字幕或图片的动态变化特技,在制作多媒体教学软件或广告宣传等多媒体演示文档时,也常常需要用到一些图文的动态变化效果。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环境下调试通过。


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用Visual Basic6.0实现电影特效"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用Visual Basic6.0实现电影特效 相关内容
Google搜索中 用Visual Basic6.0实现电影特效 相关内容
雅虎中 用Visual Basic6.0实现电影特效 相关内容
Sogou搜索中 用Visual Basic6.0实现电影特效 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 用Visual Basic6.0实现电影特效相关文章
用VB实现“木马”式隐形运行程序 利用Visual Basic操作XML数据
VB COM基础讲座之发布组件 VB COM基础讲座之创建测试程序
改善SQL Server内存管理 Visual Basic小游戏:猜英雄
用VB6.0取得系统信息技巧 VB COM基础讲座之编译的实例选项
VB+VC混合编程疑难问题解 VB COM基础讲座之测试ActiveX EXEs
利用VB6.0设计屏幕保护程序 VB COM基础讲座之ActiveX EXEs
Visual Basic COM基础讲座之兼容性 VB COM基础讲座之全面测试
VB COM基础讲座之建立测试程序 VB COM基础讲座之类的测试
Visual Basic的九次蜕变 用VB实现Win2000用户限时登录
Visual Basic内嵌汇编语言解决方案 VB COM基础讲座之添加属性和方法