ccidnet????

出版日期:1999-09-06 总期号:855 本年期号:65

本期导读
要闻综合
电脑工作室
市场
硬件
软件
infotimes
用vfp制作影视字幕



  在影视剧中,我们经常见到这样的字幕效果:在黑色的背景画面下,红色(或白色)文字渐渐显现出来,然后又渐渐消失在背景中。要实现这个效果并不难,今天我们就用中文版visual foxpro 3.0的表单来模仿一下这个文字渐入渐出的动画过程。



  一、添加控件,制作表单

  1.在新建的空白表单中添加一个“标签”控件并选中它,然后在其对应的“属性”窗口中依次进行如下设置:

autosize .t.   
backstyle 透明   
caption 渐入渐出效果演示   
fontbold .t.   
fontname 幼圆   
fontsize 18   
fontunderline .t.   
forecolor 0,0,0   

  其它没有提及的设置保留默认值,以下同此。

  2.在表单中添加一个“命令按钮”控件并选中它,然后在其对应的“属性”窗口中依次进行如下设置:



caption

演示开始   

fontname

仿宋_gb2312   

fontsize

14   

height

30   

width

217   


  3.在表单中添加一个“计时器”控件 ,它可以放在表单中的任何位置,表单运行时是不可见的。选中它,然后在其对应的“属性”窗口中进行如下设置:

enabled .f.   
interval 100(ms)   

  经过上面的步骤,再对控件的位置做些调整后,即得到如图1所示的表单。




  图1

  二、为控件添加代码

  1进入“演示开始”(command1)按钮的“click”事件代码窗,输入以下代码:

  if thisform.timer1.enabled=. f.

  thisform.timer1.enabled=. t.

  endif

  用鼠标单击该按钮后,计时器开始运行,并启动timer事件。

  2.进入“计时器”的“timer”事件代码窗,输入以下代码:

  i=i+10

  if i>=255*2

thisform.timer1.enabled=. f.

i=0

  endif

  if i>=255

thisform.label1.forecolor=rgb (255*2- i, 0,0)

  else

thisform.label1.forecolor=rgb (i, 0,0)

  endif

  timer事件的作用是,当计时器开始运行时(enabled值为.t.),就以interval所规定的值为时间间隔不断运行timer中的代码,直到计时器的enabled值为.f.为止。

  rgb(red,green,blue)函数通过其中红、绿、蓝三个参数的值(0~255)的不同组合可得到不同颜色。上面代码的作用即是通过逐渐改变标签(lable1)中文字“淡入淡出效果演示”的颜色,使其从黑色(0,0,0)变为红色(255,0,0),再从红色变回黑色,因为前面将标签背景已设为透明,即与表单的颜色相同,所以当表单的颜色也为黑色时,就实现了文字的渐入渐出效果。

  具体实现的代码很简单:

  (1)当i>255*2,表示文字已经过了由黑变红再返回黑色的过程,于是停止定时器运行。

  (2)当i>255,文字处于由红转黑的渐隐过程,此时红色值255*2-i由255逐渐减为0。

  (3)当i<255,文字处于由黑转红的渐现过程,此时红色值i由0逐渐增至255。

  要注意的是,如果变量i每次循环的增量和计时器中interval的值设置不当,会出现文字一现即逝或半天显不出来的情况。

  3.在表单空白处右击鼠标进入“form1”的“activate”事件代码窗,为在计时器中使用的变量i进行定义和初始化:

  public i

  i=0



  三、最后的修改及表单的运行

  在表单中除控件外的其它位置点击鼠标,使属性窗口中显示表单form1的属性,然后做如下修改:

  backcolor 0,0,0

  caption 字幕效果

  现在选择系统选单中的“表单-运行表单”,运行表单后,单击“演示开始”按钮……快动手试试吧。

  该程序在中文windows 98、visual foxpro 3.0中文专业版中调试运行通过。 (四川 关涛)