1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用VisualBasic6.0实现电影特效

用VisualBasic6.0实现电影特效

时间:2018-07-14 04:16:20

相关推荐

用VisualBasic6.0实现电影特效

设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享用VisualBasic6.0实现电影特效的教程,热爱PS的朋友们快点看过来吧!

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

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

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、图形的渐隐渐现效果

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

->BitBlthDestDC,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浏览器中复制、粘贴):

Dim1(4)AsBoolean,iasLong,sAsString,ztAsInteger

‘实现图片渐现渐隐的通用过程:

PrivateSubPicCpy(OptionalstripAsInteger=10,OptionaldelayAsInteger=20)

DimplwAsInteger,plhAsInteger,p2AsInteger

If1(3)=TrueThen

Picture1=LoadPicture("c:win98安装程序.bmp")

Else

Picture1=LoadPicture("")

EndIf

plw=

plh=

p2=0

DoWhilep2=plw

,,,,,,,,

p2=p2 strip

Sleepdelay

DoEvents

Loop‘由于图片宽度不一定是strip的整数倍,故下面再全图复制一遍图片:

,,,,,,,,

EndSub

PrivateSubForm_load()

"黑体"

s="产生缩放和隐现效果的文字"

zt=5'zt为字体大小控制变量

i=0'i为显示文字时截取文字的字数变量

EndSub

PrivateSubCmd_Click(IndexAsInteger)

If1(Index)=TrueThen

1(Index)=False

Else

1(Idex)=True

EndIf

SelectCaseIndex

Case0'激活timer1的timer过程

......'Case1,2与上述类似,分别激活timer2,timer3的timer过程

Case3'调用图片复制过程Piccpy

PiCpy10,50

Case4‘结束程序运行

UnloadMe

End

EndSelect

EndSub

PrivateSubTimer1_Timer()'实现文字缩放的过程

If1(0)=TrunThen

zt=zt 5

Else

Zt=Zt-5

ElseIf

Ifzt50orzt=5Then

EndIf

WithLabel1

.

.Left=()/2

.Top=()/2

EndWith

EndSub

PrivateSubTimer2_Timer()'实现图片缩放的过程

If1(1)=TrueThen'使图片放大

Else'使图片缩小

-

-

EndIf

If()or(Image1.Width=)Then

EndIf

Image1=LoadPicture("c:win98安装程序.bmp")

EndSub

()

If1(2)=TrueThen

i=i l

Else

i=i一1

EndIf

Ifi=Len(s)oni1Then

EndIf

Ifi=0Then

$(,)

EndIf

EndSub->

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

->

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。