荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jek (好好学习天天向上), 信区: Program
标  题: 用BCB3.0制作桌面动画
发信站: BBS 荔园晨风站 (Fri Mar 17 02:29:33 2000), 转信


  记得以前玩过一些桌面宠物类的小游戏,比如说:一只小猫在桌面上不停地追逐鼠标
等等。当时我刚开始学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中编译通过。

--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.118]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店