用VB6实现电影特效

电影或电视中经常可见到一些字幕或图片的动态变化特技,在制作多媒体教学软件或广告宣传等多媒体演示文档时,也常常需要用到一些图文的动态变化效果。VB6.0作为Windows软件的强有力开发工具,在多媒体程序设计方面具有广阔的应用前景。本文讨论运用VB6.0的定时器并结合Windows API函数实现图片或文字的动态缩放和渐隐渐现等特技效果。沈阳463整形医院http://www.hengnaya.com/

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

  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属性分别为:“文字缩放”、“图片缩放”、“文字隐现”、“图片隐现”和“退出”。 沈阳463解放军医院http://www.463eye.com/

  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环境下调试通过。

时间: 2024-10-09 21:41:30

用VB6实现电影特效的相关文章

制作电影特效效果

实现效果:   知识运用: Lable控件的Font属性 PictureBox控件的Size属性 实现代码: private void button1_Click(object sender, EventArgs e) { timer1.Start(); pictureBox1.Visible = false; label1.Visible = true; } private void button2_Click(object sender, EventArgs e) { timer1.Star

[GLSL]着色器周记02——火焰特效 【转】

http://www.cnblogs.com/tkgamegroup/p/4214081.html 这周学了好多.包括伪随机数.柏林噪声.先说伪随机数.伪随机数我们用的是周期函数而不是那种由前一项乘一个超大的数取余数的方法.使用周期函数的好处就是可以让其随时间均匀变化.不过使用周期函数一定要保证周期非常长,不然就会出现重复的图样.这是我在网上找到的一个伪随机函数:cos(x * (12.9898) + y * (4.1414)) * 43758.5453它使用x, y作为参数,刚好对应像素的坐标

云上的今天,AI的未来:影视特效怎么就成了科技企业的宠儿?

说起电影特效,大多数人都会联想起中国电影的不争气. 比如别人家的神仙打架是这样的 而自己家的神仙打架是这样的 不过今天我们要讨论的是,当影视特效成为科技企业追捧的对象,中国能从中找到机会吗? 平行宇宙的相交:离不开计算的影视特效 影视特效和科技企业,看起来是两个风马牛不相及的产业,可能只有在科幻片中才会相遇.但就在最近,谷歌宣布在洛杉矶设立第五个云区,目的是为艺术家和设计师提供服务.而这已经不是谷歌云第一次向影视行业示好了. 想要了解科技企业和影视特效的关系,首先我们要了解影视特效与计算的关系.

ubuntu入门

Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音.了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:) 大多数的美国人读 ubuntu 时,将 u 作为元音发音,类似单词 who 或者 boo ,重音在第二个音节即 u'buntu ,oo-boon-too . 如果您喜欢撒哈拉,喜欢它令人窒息的温柔.梦幻般的寂寥还有张扬恣肆的旷远,您大可在第一个 u,后面带些嗡嗡声: oom-boon-too. Ubuntu的中文发音大约为:

谁动了我的文件?

谁动了我的文件? 一.事件背景 本文描述了IT经理小李在一起广告公司文件泄露的案件中,通过对交换机.服务器日志和邮件信头进行分析,利用多方面日志内容验证了他的推测,最后他将这些信息汇总起来,勾勒出了这次攻击事件的全过程.大家在看完事件的描述后,是否知道在FTP和SSH日志中找到了什么线索?下面故事开始啦. 故事主人公小李在一家渲染农场(Render Farm)电影特效公司上班,前不久刚刚被提升为IT经理,这对于他来说是一件无比兴奋的事情.目前他们公司正在制作<某 电影>的特技效果,大家都为之共

和馅饼一起学opengl 第一篇——总概

写在前面 这个系列是关于OpenGL(以下称OGL)的一些入门学习,虽然旨在入门,但是我却不想把它写得过于简单(当然是相对的,会者不难),首先这系列要肯定的一点是一定会有编码,有实例来帮助大家一起学习,但是套用一句侯捷先生说过的话,勿在浮沙筑高台,所以我会说一些晦涩的关于OGL的理论知识,如其RC的概念,状态机等等,旨在深入浅出OGL,同时,我也在学习中,所以错误在所难免,请大家不要给我面子一定要狠狠的指出来,那么有疑问的地方我一定会寻找更多的证据来解释,所以,本系列希望达到的是一个双赢的效果,

DVI与VGA有什么区别

[DVI与VGA有什么区别] DVI接口的传输信号采用全数字格式,与之对应的是采用模拟信号的VGA接口. VGA和DVI的区别,首先VGA模拟信号的传输比较麻烦,首先是将电脑内的数字信号转换为模拟信号,将信号发送到LCD显示器,而显示器再将该模拟信号转换为数字信号,形成画面展示在大家面前,正因为如此,中间的信号丢失严重,虽然可以通过软件的方法修复部分画面,但是随着显示器的分辨率越高画面就会越模糊.一般模拟信号在超过1280×1024分辨率以上的情况下就会出现明显的误差,分辨率越高越严重. 而DV

【影评】特种部队:眼镜蛇的崛起

嗯嗯,慢慢的,把今年的电影都看过来~~<特种部队:眼镜蛇的崛起>似乎美国有这个漫画??我可以清晰记得的是,FC上有这个游戏,不过对于我这种游戏阿呆,玩不转就是了,我可以在第一关就把所有队员死光~~还是说电影,剧情上,标准的美国式英雄片,不过并不难看,故事性不错,不知道是原创还是原著既有剧情?当然本片的最大亮点就是视觉效果啦,超多的高科技装备,看得新奇:随处可见的爆炸.爆炸.爆炸,看得过瘾,不得不佩服老美的电影特效,以及烧钱如烧纸的态度,使我想起了<大腕>里的“XX就得靠钱砸”.演员

解构《穹顶之下》:新媒体形态如何重构传统媒体基因

3月1日,今天北京的空气质量指数(AQI)96,空气质量状况为"良",这比前一天重度污染的雾霾天算是略有了好转.但关于此话题的关注度和讨论热烈指数并没因此而下降. 2月28日,柴静将其采访.录制了一年的雾霾污染调查类专题纪录片<穹顶之下>正式推向公众,并迅速引发全民热议,成为2015年第一场公众事件. 公开数据显示,从上午10点正式发布到晚20点左右,该视频播放量腾讯2620万.3267条评论:优酷为401万.9088条评论:搜狐76万.172条评论:乐视305万.3条评论