程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi產生隨機動畫效果-實現教程

Delphi產生隨機動畫效果-實現教程

編輯:Delphi

本文介紹用Delphi制作實現隨機的圖形動畫效果,點擊窗體上的“開始”按鈕,窗體中的圖形將不斷發生變化,同時圖形的顏色也不斷變幻,形成一種圖形動畫的效果。點擊“停止”按鈕,圖形則停止變化,點擊“退出”按鈕,退出該程序。

Delphi動畫效果

實現動畫效果的設計思路:

本例用到的控件主要是Shape 控件、Timer 控件和BitBtn 控件等。動畫技術是現代計算機應用領域最為活躍、發展最快的部分之一。動畫的實現需要兩個要素,一是圖形的產生,二是圖形的變化。Delphi提供了解決這兩個問題的良好方案,利用Shape 控件可以產生常見的各種圖形,利用Timer 控件的OnTimer 事件則可以精確地控制動畫產生的時間。

程序設計步驟:

使用Delphi 提供的Shape 控件可以產生一些常用的圖形形狀,如橢圓、矩形、圓角方形等。Shape 控件類似於Image 控件,可以為圖形的顯示提供容器。本例中首先在窗體上創建了一個Shape 控件和一個Timer 控件。產生圖形動畫的基本原理是每隔一定的時間對窗體上的Shape 控件的形狀、顏色和填充的內容等各種參數進行改變,改變的方式由系統產生的隨機數確定,而時間參數則是由Timer 控件的Interval 屬性決定。最後在窗體中添加幾個BitBtn 控件,控制動畫的開始和停止,同時控制程序的退出。

1.新建工程:

(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。

(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。

(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Project1”,點擊“保存”按鈕,保存上面的選項。

2.修改窗口:

(1)激活Unit1 窗口,在“屬性”面板中設置該窗體的Caption 屬性為“隨機圖形動畫”,Name 屬性為“Form1”。

(2)選擇“附加”頁上的Shape 選項,在窗體中添加1 個Shape 控件,在“屬性”面板中設置各種合適的屬性。

(3)選擇“系統”頁上的Timer 選項,在窗體中添加一個Timer 控件,在“屬性”面板中設置其Enable 屬性為True,Interval 屬性為500,即表示時間間隔為0.5 秒,Name為Timer1。

(4)選擇“附加”頁上的BitBtn 選項,在窗體中添加3 個BitBtn 控件,在“屬性”面板中點擊Glyph 屬性右邊的按鈕,從彈出的對話框中為按鈕選擇合適的圖標,設置其Caption 屬性分別為“開始”、“停止”和“退出”。

Delphi實現動畫效果的代碼分析:

(1)程序中定義了一個布爾型變量Start,用Start 來決定是否開始隨機動畫,利用Randomize 語句來實現隨機事件,相應的Timer 控件的OnTimer 事件代碼如下:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
begin
Randomize;
Form1.shape1.Brush.Color:=RGB(random(255),random(255),random(255));
Randomize;
//隨機設置畫筆模式
case random(8) of
0:Form1.Shape1.Brush.Style:=bsSolid;
1:Form1.Shape1.Brush.Style:=bsBdiagonal;
2:Form1.Shape1.Brush.Style:=bsVertical;
3:Form1.Shape1.Brush.Style:=bsFdiagonal;
4:Form1.Shape1.Brush.Style:=bsDiagCross;
5:Form1.Shape1.Brush.Style:=bsCross;
6:Form1.Shape1.Brush.Style:=bsHorizontal;
7:Form1.Shape1.Brush.Style:=bsClear;
end;
randomize;
Form1.Shape1.pen.Color:=RGB(random(255),random(255),random(255));
randomize;
Form1.shape1.pen.Width:=random(10)+1;
randomize;
//隨機設置繪圖模式
case random(16) of
0:Form1.shape1.pen.mode:=pmBlack;
1:Form1.shape1.pen.mode:=pmNotxor;
2:Form1.shape1.pen.mode:=pmXor;
3:Form1.shape1.pen.mode:=pmNotMask;
4:Form1.shape1.pen.mode:=pmNotMerge;
5:Form1.shape1.pen.mode:=pmMerge;
6:Form1.shape1.pen.mode:=pmMaskNotPen;
7:Form1.shape1.pen.mode:=pmMaskPenNot;
8:Form1.shape1.pen.mode:=pmMaskNotPen;
9:Form1.shape1.pen.mode:= pmMergePenNot;
10:Form1.shape1.pen.mode:=pmMergeNotpen;
11:Form1.shape1.pen.mode:=pmNotCopy;
12:Form1.shape1.pen.mode:=pmCopy;
13:Form1.shape1.pen.mode:=pmNot;
14:Form1.shape1.pen.mode:=pmNop;
15:Form1.shape1.pen.mode:=pmWhite;
end;
Randomize;
//隨機設置繪圖風格
case random(7) of
0:Form1.shape1.Pen.Style:=psSolid;
1:Form1.shape1.Pen.Style:=psDash;
2:Form1.shape1.Pen.Style:=psDot;
3:Form1.shape1.Pen.Style:=psDashDot;
4:Form1.shape1.Pen.Style:=psDashDotDot;
5:Form1.shape1.Pen.Style:=psClear;
6:Form1.shape1.Pen.Style:=psInsideFrame;
end;
randomize;
//設置Shape 控件的形狀,共有6 種形狀可選
case random(7) of
0:Form1.shape1.shape:=stRectangle;
1:Form1.shape1.shape:=stSquare;
2:Form1.shape1.shape:=stRoundRect;
3:Form1.shape1.shape:=stRoundSquare;
4:Form1.shape1.shape:=stEllipse;
5:Form1.shape1.shape:=stCircle;
end;
end;
end;

(2)“開始”和“停止”按鈕用來控制隨機動畫的開始和停止,其實就是控制布爾型變量Start 的值:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
start:=true;//圖形動畫開始
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
start:=False;//圖形動畫停止
end;

(3)退出程序的操作很簡單,只需Close 語句即可實現:

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Close;
end;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved