程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 用BCB3.0制作桌面動畫

用BCB3.0制作桌面動畫

編輯:關於C++

大家好。記得以前玩過一些桌面寵物類的小游戲,比如說:一只小貓在桌面上不停的追逐鼠標等等。當時我剛開始學Windows的編程,曾經對這類程序為什麼能在桌面上直接作動畫感到百思不得其解。下面我們就來談談制作桌面動畫的原理。其實說穿了很簡單:就是先准備幾張連續的圖片,然後在桌面上建一個形狀不規則的窗口(窗口具體是什麼形狀要由顯示什麼樣的動畫來決定),然後一邊移動窗口,一邊給窗口更換圖片就行了。是不是很簡單。下面就用BCB來做一個例子:

打開BCB,新建一個標准工程。

在Form1中添加一個名為Timer1的Timer控件。

在Unit1.h中添加以下代碼:

#include "winuser.h"

#include "wingdi.h"

然後在Form1的OnCreate事件中添加以下代碼:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
BorderStyle=bsNone;
Timer1->Enabled=false;
Timer1->Interval=150;
SetWindowRgn(Form1->Handle,CreateEllipticRgn(0,0,80,80),true);//做一個圓形的窗口
}

在Form1的OnPaint事件中添加以下代碼:

void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->Pen->Width=1;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clRed;
Canvas->Brush->Color=clRed;
Canvas->Ellipse(0,0,79,79);//在窗口中畫一個圓形
}

在Form1的OnMouseDown事件中添加以下代碼:

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button==mbLeft)//點鼠標左鍵就開始移動
Timer1->Enabled=true;
if(Button==mbRight)//點鼠標右鍵就退出
Close();
}

在Timer1的OnTimer事件中添加以下代碼:

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(Form1->Top>=1)
Form1->Top=Form1->Top-2;
else
Timer1->Enabled=false;
}

現在保存並編譯它,然後執行,你就會看到一個圓形在桌面上向上移動。這裡因為篇幅所限,所以給出的例子比較簡單。不過桌面動畫的實現原理已經說的很清楚了。

以上程序在BCB3.0+Win97中編譯通過。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved