选择显示字体大小

用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&#36;(s,i)
  end if
end sub

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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons