桌面動畫本質是:建立一個不規則形狀視窗(如圓形),在 Timer 事件中不斷移動視窗位置,並切換顯示的圖片序列,即可形成動畫效果。
Form1 放置 Timer1。Unit1.h 包含 winuser.h、wingdi.h。FormCreate 設定無邊框、建立橢圓區域:void __fastcall TForm1::FormCreate(TObject *Sender)
{
BorderStyle = bsNone;
Timer1->Enabled = false;
Timer1->Interval = 150;
SetWindowRgn(Form1->Handle, CreateEllipticRgn(0, 0, 80, 80), true);
}
FormPaint 繪製圓形圖案: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);
}
FormMouseDown 控制動畫啟停:void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Button == mbLeft) Timer1->Enabled = true; // 左鍵開始
if (Button == mbRight) Close(); // 右鍵結束
}
Timer1Timer 向上移動視窗:void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (Form1->Top >= 1) Form1->Top -= 2;
else Timer1->Enabled = false;
}
編譯執行後,桌面上會出現一個紅色圓形向上移動。此為基礎範例,實際專案可擴充圖片切換、路徑規劃等功能。