摘 要:電影或電視中的字幕往往采用一些動態變化的特殊效果以增強可視性、醒目性,配合節目主題,吸引廣大的受眾。面向對象編程語言Visual Basic 6.0在多媒體程序設計方面功能強大,使用標簽和計時器對象便可以輕松實現若干種電影電視的字幕特技。討論最為常見文字滾動字幕、漸現漸隱、忽隱忽現、動態縮放等特技效果的設計,具有實際的應用價值。
關鍵詞:字幕特技;計時器;事件;事件過程
中圖分類號:TP311;TP316 文獻標識碼:B 文章編號:1004373X(2008)2007603
Realization of Several Kinds of Film or TV Captions Stunt with VB 6.0
YANG Zhanhai1,ZHANG Weihu2,ZHU Xiaomin1
(1.Computer Center,Yan′an Unversity,Yan′an,716000,China;2.College of Physics and Electronic Information,Yan′an Unversity,Yan′an,716000,China)
Abstract:Film or captions in TV sometimes adopt the peculiar effect that a little development changes to strengthen but look at nature,eye-striking,the subject coordinating a program,the masses attracts extensive accepting.6.0 in the field of multi-media programming be geared to the needs of marriage partner programming language Visual Basic be powerful.Using the label and the timer marriage partner to be able to be relaxed just realizing some kinds of film TV captions stunt.The special effect design such as captions are discussed that characters rolls be common most,gradually show a fade-out,flickering,dynamic shrink and grow,it has actual application value.
Keywords:captions stunt;timer;event;event procedure
在電影或電視中的字幕中,恰如其分地應用文字特技效果,能夠吸引廣大受眾的眼球。如果文字特技效果與節目內容切合得好,就能充分展現節目的內容,突出節目的特色特點,對節目的內容具有很強的提示或說明作用,引導受眾接受節目、喜歡節目、支持節目。所以研究文字特技效果的實現,具有實際的應用價值。
Visual Basic 6.0是Microsoft公司推出的拳頭產品,所以在Windows環境下進行編程有其先天的特點和優勢,現已贏得了越來越多開發者的青睞。應用VB 6.0進行多媒體設計簡單、易于實現。
本文主要使用標簽對象的主要屬性的改變和計時器對象的屬性設置以及Timer事件的設計實現了多種文字的動態效果,以供電影或電視字幕特技設計人員引用參考。
1 滾動字幕
滾動字幕是電影或電視最為常見的字幕形式之一,如在播放電視連續劇時,屏幕下端的廣告滾動或節目預告滾動,再如片尾的從下到上的字幕滾動??傊帜坏臐L動方式可分為從右向左的滾動字幕、從左向右的滾動字幕、從上到下的滾動字幕以及從下到上的滾動字幕。
1.1 從右向左的滾動字幕
在Form1窗體上畫出標簽Label1。設置其Caption屬性值為“從右向左的滾動字幕”,將來作為滾動的文字用;設置其AutoSize屬性值為True,以確保標簽的寬度和高度與文字內容相適應。
再次,在Form1窗體上畫出計時器Timer1。設置其Enabled屬性值為True,以保證計時器處于啟動狀態中;設置Interval屬性為200,即每0.2 s觸發1次計時器Timer事件。
文字滾動效果的實現關鍵就是設計計時器Timer1的Timer事件。從右向左的滾動字幕實現原理可理解為,在窗體中從右向左移動標簽,標簽的寬度不變,只需逐漸縮短標簽距離窗體左邊的距離,這需要標簽Left屬性的值不斷縮小,如語句:
Label1.Left = Label1.Left - 200
每執行該語句1次,標簽Label1的Left屬性就會減少200Twip,標簽Label1也就向右移動200Twip。每過0.2 s,就會觸發一次計時器Timer1的Timer事件,若上面的語句屬于計時器Timer1的事件過程,語句也就會每過0.2 s執行1次,標簽Label1則不斷的向左移動。
標簽Label1不斷地向左移動,就會在移出窗體的左端。此時,整個標簽都移出了窗體的左邊界,標簽的Left屬性值應該等于或小于負的標簽的寬度,語句表現為:
Label1.Left <= -Label1.Width
為實現從右向左的滾動字幕的連續性,當標簽移出窗體的左端時,應使得標簽從窗體的右端出現,可設置標簽Label1的Left屬性值等于窗體的寬度,即:
Label1.Left = Me.ScaleWidth
從右向左的滾動字幕的Timer事件過程為:
Private Sub Timer1_Timer()
If Label1.Left <= -Label1.Width Then
Label1.Left = Me.ScaleWidth
Else
Label1.Left = Label1.Left - 200
End If
End Sub
1.2 從左向右的滾動字幕
從左向右的滾動字幕的實現原理同上面的基本原理。先初始化好標簽Label2和計時器Timer2,再編寫計時器Timer2的Timer事件。
向右移動可增加標簽的Left屬性的值,當增加后的值等于或大于窗體寬度時,表示移出窗體右端,改變Left的值為負的標簽的寬度,標簽將從左端再次出現。
從左向右的滾動字幕的Timer事件過程為:
Private Sub Timer2_Timer()
If Label2.Left >= Me.ScaleWidth Then
Label2.Left = -Label2.Width
Else
Label2.Left = Label2.Left + 200
End If
End Sub
1.3 從下到上的滾動字幕
從下到上的滾動字幕的可以通過遞減標簽的Top屬性值來實現。先初始化好標簽Label3和計時器Timer3,再編寫計時器Timer3的Timer事件。
向上移動可遞減標簽的Top屬性的值,當遞減后的值等于或小于負的標簽高度時,表示移出窗體上端,改變Top的值為窗體的高度,標簽將從底端再次出現。
從下到上的滾動字幕的Timer事件過程為:
Private Sub Timer3_Timer()
If Label3.Top <= -Label3.Height Then
Label3.Top = Me.ScaleHeight
Else
Label3.Top = Label3.Top - 200
End If
End Sub
1.4 從上到下的滾動字幕
從上到下的滾動字幕的可以通過遞增標簽的Top屬性值來實現。先初始化好標簽Label4和計時器Timer4,再編寫計時器Timer4的Timer事件。
向下移動可遞增標簽的Top屬性的值,當遞增后的值等于或大于標簽高度時,表示移出窗體底端,改變Top的值為負的標簽的高度,標簽將從上端再次出現。
從上到下的滾動字幕的Timer事件過程為:
Private Sub Timer4_Timer()
If Label4.Top >= Me.ScaleHeight Then
Label4.Top = -Label4.Height
Else
Label4.Top = Label4.Top + 200
End If
End Sub
2 漸隱漸現
文字從左向右依次顯示,就是漸現效果,文字從右向左依次隱藏,就是漸隱效果。播放電視連續劇時,屏幕右下角的一些廣告就采用了漸隱漸現的特技效果。
2.1 文字的漸現
利用計時器的Timer事件,每過若干秒,觸發1次Timer事件,每觸發1次Timer事件,增加1個文字,文字就會依次顯示,實現漸現效果。當所有的文字全部顯示后,可以重新漸現,實現漸現的循環效果。
初始設置標簽Label5和計時器Timer5的有關屬性后,文字的漸現效果的Timer事件過程為:
Private Sub Timer5_Timer()
s = \"文字的漸現效果\"
Static n As Integer
If n = Len(s) + 1 Then n = 0
Label5.Caption = Left(s,n)
n = n + 1
End Sub
其中n為靜態的局部變量,可以保留上次事件的結果,每次增加1,Left(s,n)表示取s字符串的左端的n個字符構成的新的字符串;Len(s)表示s的長度,即字符的個數。n依次增加時,Left(s,n)取出的字符個數亦依次增加,執行語句Label5.Caption = Left(s,n)后,形成漸現效果,當n超過Len(s),取n為0,實現再次漸現。
2.2 文字的漸隱
文字的漸隱效果和文字的漸現效果的實現原理完全相同,不同的是它們互為逆過程。
初始設置標簽Label6和計時器Timer6的有關屬性后,文字漸隱效果的Timer事件過程為:
Private Sub Timer6_Timer()
s = \"文字的漸隱效果\"
Static n As Integer
If n = -1 Then n = Len(s)
Label6.Caption = Left(s,n)
n = n - 1
End Sub
3 忽隱忽現
忽隱忽現是文字顯示后隱藏,隱藏后顯示,顯示與隱藏相互交替的效果。忽隱忽現特技,具有很強的誘因作用,在電影或電視中的字幕中應用廣泛,如某牌的奶粉的小廣告字幕。
利用標簽的可見性,即Visible屬性的真假交替,也就True與False的交替,就可以實現忽隱忽現的文字特技效果。
初始設置標簽Label7和計時器Timer7的有關屬性后,文字的忽隱忽現效果的Timer事件過程為:
Private Sub Timer7_Timer()
Label7.Visible = Not Label7.Visible
End Sub
4 動態縮放
為吸引觀眾的眼球,電影或電視的片頭字幕往往以動態縮放的形式加以展現,當字幕出現時,文字從小變大;字幕結束時,文字從大變小。
4.1 動態放大
文字的動態放大效果可以通過增加標簽的FontSize屬性值實現,當文字字號增大到一定的程度后,再把標簽的FontSize屬性值設為最小值。
初始設置標簽Label8和計時器Timer8的有關屬性后,文字的動態放大效果的Timer事件過程為:
Private Sub Timer8_Timer()
If Label8.FontSize >= 50 Then
Label8.FontSize = 5
Else
Label8.FontSize = Label8.FontSize + 5
End If
End Sub
4.2 動態縮小
文字的動態放大效果可以通過遞減標簽的FontSize屬性值來實現,當文字字號減少到一定的程度后,再把標簽的FontSize屬性值設為最大值。
初始設置標簽Label9和計時器Timer9的有關屬性后,文字的動態縮小效果的Timer事件過程為:
Private Sub Timer9_Timer()
If Label9.FontSize <= 5 Then
Label9.FontSize = 50
Else
Label9.FontSize = Label9.FontSize - 5
End If
End Sub
5 跟隨鼠標
文字的特技效果除了可以通過計時器控件的Timer事件實現外,還可以利用其他的事件去實現。例如,利用窗體的鼠標移動事件,在MouseMove事件中編寫代碼:
Label10.Move X,Y
這樣移動鼠標時,觸發MouseMove事件,標簽Label10執行移動方法Move,把標簽移到X,Y處,而X,Y處就是鼠標光標的位置,結果形成了文字跟隨鼠標的效果。
文字跟隨鼠標的特技效果在電影或電視的教學節目中比較常見。
6 結 語
本文介紹的文字特技效果的設計是比較基礎的內容,起一個拋磚引玉作用,工作人員可以結合VB 6.0的多媒體技術,設計更為精彩的文字特技效果。
文字特技效果不僅在電影電視中有所應用,還在其他方面有著廣泛的應用,如教師上課、學生做論文答辯、公司做產品介紹、各種會議報告、程序界面等都會需要文字特技效果的修飾。了解和掌握一定的文字特技效果的知識、原理,是非常自然和實用的事情。
參考文獻
[1]Bradley J C,\\Millspaugh A C.VB.NET大學教程(國際版)[M].北京:清華大學出版社,2004.
[2]劉炳文.Visual Basic程序設計[M].2版.北京:清華大學出版社,2003.
[3]師維軍.VFP6.0中滾動字幕的實現及應用[J].農業網絡信息,2006(11):95-97.
[4]陸志堅.用VC實現淡入淡出的滾動字幕[J].電腦編程與維護,2001(10):78-80.
[5]周曉宏.基于VB的模擬應用程序加載窗體的設計方法\\.現代電子技術,2007,30(4):140-142.
[6]于振洋,趙文東.語音編輯播放系統的應用研究\\.現代電子技術,2007,30(14):95-97,100.
作者簡介 楊戰海 男,1972出生,陜西涇陽人,講師。主要從事計算機算法和數據庫技術方面的研究。