奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> VB >> 用VB6.0实现几种图文特效的演示程序
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • VB中使用WinSock控件传

  • VB API函数介绍——控

  • VB从零开始编外挂(完整

  • VB.Net实现Web Servic

  • 老树新芽 体验Visual 

  • vb中利用xmlhttp来下载

  • vb中使用正则表达式

  • ASP.NET中Cookie编程的

  • 用VB6.0实现几种图文特效的演示程序
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

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

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.