Delphi實現Windows標准動畫效果的演示,包括完整的實現思路和代碼講解,學習Delphi動畫編程不錯的參考資料。在窗體的左邊有多種動畫可供選擇,窗體的右邊可以觀看動畫演示,同時窗體的右下角可以查看當前的動畫狀態。用鼠標點擊“停止”按鈕,可以停止動畫演示,點擊“關閉窗口”按鈕,可以退出演示程序。
要實現這類動畫效果,具體思路是:利用Delphi中的RadioGroup 控件、BitBtn 控件、Animate 控件和StatusText控件等。Animate 是Windows 動畫構件包。使用Animate 對象可以在窗口上安置一個動畫構件。動畫構件是一個靜態顯示交替存取視頻(AVI)剪貼的窗口。一個AVI 剪貼是像電影一樣的一系列位圖幀。盡管AVI 剪貼可以有聲音,但動畫構件僅以無聲的AVI 剪貼工作。Animate 對象可以運行未壓縮的AVI 文件或者運行長度編碼(RLE)壓縮的AVI 剪貼。從AVI 資源和AVI 文件中,Animate 對象可以獲得它的AVI 剪貼。如果應用程序在Windows 9x 或Windows NT 下運行時,則從shell.dll 中,Animate 對象可以獲得它的AVI剪貼。
編寫時要解決三個問題:設計界面、顯示播放動畫狀態和播放動畫。設計界面需要利用到Delphi 6.0 的RadioGroup 控件、BitBtn 控件、Animate 控件和StatusText 控件等。要實現顯示播放動畫狀態,只需定義兩個數組,一個數組用來定義AVI動畫數組,另一個用來定義播放動畫說明文字。播放動畫只需調用AVI 動畫數組中的相關動畫即可。
1.新建工程
(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Main”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Animator”,點擊“保存”按鈕,保存上面的選項。
2.修改窗口
(1)激活MainForm 窗口,在“屬性”面板中設置該窗體的Caption 屬性為“Windows標准動畫演示”,Color 屬性設置為“clBtnFace”。
(2)選擇“標准”頁上的RadioGroup 選項,在窗體中添加RadioGroup 控件,調整其合適的大小和位置,在“屬性”面板中設置該控件的Name 屬性為“RadioGroup1”,Caption 屬性設置為“選擇動畫”,Columns 設置為1,用鼠標點擊面板中Items 右邊的Tstrings文本框,打開如圖5-10 所示“字串列表編輯器”對話框,在其中輸入“復制文件”、“復制多個文件”、“刪除文件”、“清空回收站”、“查找計算機”、“搜索文件”、“搜索文件夾”和“刪除文件到回收站”,點擊OK 按鈕確定。
(3)選擇“附加”頁上的BitBtn 選項,在窗體中添加三個BitBtn 控件。在“屬性”面板中設置其Caption 屬性分別為“開始”、“停止”和“關閉窗口”,設置其Name 屬性分別為“GoBitBtn”、“StopBitBtn”和“BitBtn1”。按下Shift 鍵,同時選中這三個BitBtn 控件,選擇“編輯”菜單下的“對齊”命令,從彈出的對話框中選擇一種合適的對齊方式,使這三個控件在窗體上排列整齊。
(4)分別選中各個BitBtn 控件,在“屬性”面板中點擊Glyph 屬性右邊的文本框,從彈出的對話框中為BitBtn 控件選擇合適的圖標。選中BitBtn1 控件,在“屬性”面板中設置其Kind 屬性為bkClose。
(5)選擇Win 32 頁上的Animate 選項,在窗體中添加Animate 控件,調整其合適的大小和位置。在“屬性”面板上設置其Color 屬性為“clBtnFace”,設置其Name 屬性分別為“Animate1”。
(6)選擇“標准”頁上的Label 選項,在窗體中添加Label 控件,調整其合適的大小和位置。在“屬性”面板上設置其Caption 屬性為“動畫狀態”。
(7)選擇“附加”頁上的StaticText 選項,在窗體中添加StaticText 控件,調整其合適的大小和位置。在“屬性”面板上設置其Color 屬性為“clBtnFace”,Caption 屬性為“停止動畫”。
下面對代碼進行分析:
(1)在程序的Type 部分需定義兩個數組,一個數組用來定義AVI 動畫數組,另一個用來定義播放動畫說明文字。
type aviKindArray = array[0 .. 7] of TCommonAvi; //定義動畫數組 aviStringArray = array[0 .. 7] of String; //定義播放動畫說明文字數組 const aviKinds: aviKindArray = (aviCopyFile, aviCopyFiles, aviDeleteFile, avIEmptyRecycle, aviFindComputer, aviFindFile, aviFindFolder, aviRecycleFile); aviStrings: aviStringArray = (’復制文件’, ’復制多個文件’, ’刪除文件’, ’清空回收站’, ’查找計算機’, ’搜索文件’, ’搜索文件夾’, ’刪除文件到回收站’);
(2)點擊“開始”按鈕時,程序開始演示選中的動畫,同時在窗體的右下方顯示當前演示的動畫狀態:
procedure TMainForm.GoBitBtnClick(Sender: TObject); var AnimIndex: Integer; // 動畫數組目錄 begin AnimIndex := RadioGroup1.ItemIndex; with Animate1 do begin StatusText.Caption := aviStrings[AnimIndex]; CommonAVI := aviKinds[AnimIndex]; Play(1, FrameCount, 0); // 開始動畫演示 end; end;
(3)點擊“停止”按鈕時,程序停止動畫演示,同時動畫狀態欄顯示“停止動畫”。
procedure TMainForm.StopBitBtnClick(Sender: TObject);//停止動畫 begin Animate1.Stop; StatusText.Caption := ’(停止動畫)’; end;