工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VB > 正文
用VB6.0实现几种图文特效的演示程序
[文章信息]
作者:谷和启
时间:2005-03-04
出处:天极网
责任编辑:方舟
[文章导读]
本文讨论运用VB6.0的定时器并结合Windows API函数实现图片或文字的动态缩放和渐隐渐现等特技效果
advertisement
专题教程宝典
【软件应用】
【办公软件】
【图形图像】
【网页制作】
【操作系统】
【网络安全】
【程序开发】
【日报周刊】
【多媒体教程】
· 天极软件应用多媒体教程
· Windows开机关机故障分析及排除
· 图解PS按比例自动批量裁剪照片
· Visual FoxPro9.0构建管理系统图解
· 体验面对面的网络视频通讯
· 对付网页恶意代码
· Word动画教程:表格操作全接触
· JBuilder 2005开发Applet游戏全接触
· WinRAR操作技巧与另类应用
· 用VMware 5实现多系统同时运行
[正文]
  电影或电视中经常可见到一些字幕或图片的动态变化特技,在制作多媒体教学软件或广告宣传等多媒体演示文档时,也常常需要用到一些图文的动态变化效果。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环境下调试通过。

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • VB中利用第三方控件实现QQ垂直菜单
  • Visual Basic下压缩数据流播放技术
  • VB中使用DDE技术为应用程序增辉
  • Visual Basic编程的七个优良习惯
  • 用Visual Basic设计个性化文件夹图标
  • 宏智科技第一大股东王栋可能将接棒中科健
  • 微软中国公关高手龚定宇可能将于本周离职
  • 苏宁驳斥董事长被捕传闻 第一高价股遭攻击
  • 世通前老总面临三项指控 证据不足定罪困难
  • 2004北美十大渠道巨擘 钱伯斯鲍尔默榜上有名
  • 波导渠道精兵简政 西门子波导联盟名存实亡
  • 地面数字电视国家标准 出台很慢 融合很难
  • 政府信息化新需求:应急联动系统要“升级”
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索