程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi桌面上的寵物

Delphi桌面上的寵物

編輯:Delphi

Delphi制作一個可愛的桌面寵物,運行程序後,有一個小動物的圖像在桌面窗口中不斷地向右移動。不論該程序是否為當前活動窗口,這個小動物的圖像都出現在桌面上。在動物圖像上點擊鼠標右鍵,可以選擇不同的動物圖像,還可以控制它向右移動的速度,以及控制它是否同時在豎直方向上移動。在右鍵菜單中選擇退出命令,即可退出該程序。

Delphi實現桌面寵物

設計思路及步驟:要實現桌面寵物,首先需要隱藏標題欄,制作透明窗體效果,接下來需要設置窗體的各項屬性。利用Timer 控件來控制圖像和窗體的移動,因為可以控制圖像在水平方向或豎直方向上移
動,所以需要用到兩個Timer 控件。

1.新建工程文件:

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

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

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

2.修改窗口參數:

(1)激活Unit1 窗口,在“屬性”面板中設置該窗體的Caption 屬性為“桌面小精靈”,Name 屬性為“Form1”。

(2)選擇“附加”頁上的Image 選項,在窗體中添加一個Image 控件,在“屬性”面板中設置該控件的Align 屬性為alClIEnt,使圖像充滿整個窗體,Name 屬性設置為“Image1”,用鼠標點擊Picture 屬性右邊的文本框,從彈出的對話框中導入合適的圖像文件,設置Stretch 屬性為False。

(3)選擇“系統”頁上的Timer 選項,在窗體中添加2 個Timer 控件,在“屬性”面板中設置其Name 屬性分別為Timer1 和Timer2,設置其Interval 屬性分別為10 和20。設置Timer1 的Enable 屬性為True,Timer2 的Enable 屬性為False。

(4)選擇“標准”頁上的PopupMenu 選項,在窗體中添加PopupMenu 控件,雙擊該控件,進入右鍵菜單編輯窗口,設置右鍵菜單如下:退出,速度(快速、中速、慢速)、上下移動(快速、中速、慢速、停止上下移動)、圖案(猴子、駿馬、小猴)、背景音樂(播放音樂、停止播放)。

對具體代碼進行分析:

(1)程序運行時,需要隱藏標題欄,同時需要初始化窗體制作透明窗體,這需要用到一些Windows API 函數:

procedure TForm1.FormCreate(Sender: TObject); //隱藏窗體的標題欄
Var
Save : LongInt;
begin
If BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle,gwl_Style);
If (Save and ws_Caption)=ws_Caption then begin
Case BorderStyle of
bsSingle,
bsSizeable : SetWindowLong(Handle,gwl_Style,Save and
(Not(ws_Caption)) or ws_border);
bsDialog : SetWindowLong(Handle,gwl_Style,Save and
(Not(ws_Caption)) or ds_modalframe or ws_dlgframe);
end;
Height:=Height-getSystemMetrics(sm_cyCaption);
Refresh;
end;
brush.style:=bsClear;//隱藏背景,使窗體變為透明
Inherited;
speed:=1; //設置初始速度
end;

(2)兩個Timer 控件的OnTimer 事件控制小動物圖像在豎直方向或水平方向上運動,同時選擇不同的速度時,小動物圖像移動的速度也需要發生變化,這需要用到IF 語句,代碼如下:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Form1.Left>=screen.Width then //當窗體移動到屏幕之外時
Form1.Left:=0
else
if speed=4 then //窗體快速移動
Form1.Left:=Form1.Left+4
else if speed=2 then //窗體中速移動
Form1.Left:=Form1.Left+2
else //窗體慢速移動
Form1.Left:=Form1.Left+1;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if Form1.Top>=screen.Height then //當窗體移動到屏幕之外時
Form1.Top:=0
else
if speedu=15 then //窗體快速移動
Form1.Top:=Form1.Top+15
else if speedu=8 then //窗體中速移動
Form1.Top:=Form1.Top+8
else //窗體慢速移動
Form1.Top:=Form1.Top+2;
end;

(3)程序運行時,點擊鼠標右鍵可以選擇不同的圖案作為桌面小精靈的圖像,這需要用到Image 的Picture 屬性,代碼如下:

procedure TForm1.M2Click(Sender: TObject);//選擇猴子圖案
begin
Image1.Picture.Bitmap.LoadFromFile(’monkey.bmp’);
end;
procedure TForm1.N2Click(Sender: TObject);//選擇駿馬圖案
begin
Image1.Picture.Bitmap.LoadFromFile(’horse.bmp’);
end;
procedure TForm1.S3Click(Sender: TObject);//選擇小蛇圖案
begin
Image1.Picture.Bitmap.LoadFromFile(’snake.bmp’);
end;

(4)同時我們可以調用相關函數,控制桌面小精靈是否播放背景音樂:

procedure TForm1.P1Click(Sender: TObject);//播放背景音樂
begin
MCISendString(’OPEN spring.mid TYPE SEQUENCER ALIAS NN’, ’’, 0, 0);
MCISendString(’PLAY NN FROM 0’, ’’, 0, 0);
MCISendString(’CLOSE ANIMATION’, ’’, 0, 0);
end;
procedure TForm1.S4Click(Sender: TObject);//停止播放背景音樂
begin
MCISendString(’OPEN spring.mid TYPE SEQUENCER ALIAS NN’, ’’, 0, 0);
MCISendString(’STOP NN’, ’’, 0, 0);
MCISendString(’CLOSE ANIMATION’, ’’, 0, 0);
end;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved