Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14481234
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:47:11

下载本文示例代码
p>  Delphi是Borland公司推出的面向对象的开发工具,用它可以快速地创建Windows应用程序。它拥有快捷的编译器,并提供了丰富的构件集、强大的代码自动生成功能和丰富的数据库管理工具等。下面就作者的经验,谈谈利用Delphi设计动画的一些技巧,并提供完整的示例程序。   Timage构件变换法利用多个Timage构件在同一位置显示图像,而每个Timage构件装入的图像又各不相同,连续显示的效果可以形成动态感。下面以本公司徽标为例,介绍在封面制作中徽标的动作。在封面窗体(TQD_start) 中放入10个(其数目可根据实际情况确定)Timage图像构件和1个time 时钟构件。其中第一个Timage构件的VISIBLE的属性置为False,其他T image构件的VISIBLE属性均设置为True;Timer构件的INTERVAL值可根据要求的动作频率来确定,本例定为200。   Delphi中的Timage构件装入的图形文件格式一般为bmp、ico、em f、wmf等,改变图像时可选用支持上述格式的图形软件。例如,首先将徽标存入文件LS1.BMP,利用PHOTOSHOP软件的Image Size(Pixel Dime nsions)来逐步改变图形的大小,分别按LS2、LS3...LS10.BMP文件名存盘。值得注意的是,图形的背景应和封面背景颜色保持一致,并且不留边框痕迹。图1 ls1,ls2......ls10.bmp 双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer1Timer(Sender:TObject); CONST i:integer=2; begin case i of 2:image1.picture:=image4.picture; 3:image1.picture:=image5.picture; 4:image1.picture:=image6.picture; 5:image1.picture:=image7.picture; 6:image1.picture:=image8.picture; 7:image1.picture:=image9.picture; 8:image1.picture:=image10.picture; 9:image1.picture:=image11.picture; 10:image1.picture:=image12.picture; 11:image1.picture:=image13.picture; 12:begin image1.picture:=image14.picture; i:=2; end; end; i=:i 1 end; end. 不难看出,本程序执行后徽标由大至小不断覆盖,仿佛该徽标由远及近在运动。请注意其运动轨迹是反复由大至小,如果希望其运动效果是由远及近、由近及远,又由远及近,周而复始,可将程序作相应修改,本文由于篇幅所限从略。   如果希望将动作效果再改变一下,徽标由 叫 ⒂山?霸兜耐??,按顺时针或反时针旋转,可利用PHOTOSHOP软件的Rotate来逐步改变图形的转向,然后重新装入Timage构件。显然,图形数量取得愈多则动画效果愈平滑,可根据实际情况选定。   数据库GRAPHICS字段变换法首先在Delphi下建立数据库(例如:QD_T.db),其结构如下:表1 数据库结构然后可利用PHOTOSHOP软件的Image Size或Rotate功能反复编辑图片,按Ctrl C拷贝;切换回Delphi,选中Dbimage构件,按Ctrl v粘贴。Dbimage构件的Stretch属性扩展图片的大小,以便它填满整个Dbima ge构件,即如果图片太大,该构件会自动按比例缩小图片。   在封面窗体(TQD_start)中放入1个Table构件(从Data Access页中选择,其中Name选QDT able,TableName选QD_T.db)、1个DataSource 构件(从Data Access页中选择,其中Name选Q_S ource,DataSet选QD_T able)、1个DBImage构件(从Data Controls页中选择,其中DataSouce 选QD_Source,DataField选QD,Stretch选True)和1个Ttimer时钟构件( 从Data Access页中选择)。   双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer1Timer(Sender:TObject); begin QD_Table.MoveBy(1); if QD_Table.EOF then begin QD_Table.First; end; end; 本程序可参考Timage构件变换法,修改以上源程序来变换动作顺序或旋转方向,以达到要求的动画效果。   Tpanel构件变换法利用Tpanel构件作背景,Timage构件装载图像,图像的移动效果相当平滑,通过改变图像构件的物理位置来描绘动画轨迹或随机漫游。   在封面窗体(TQD_start)中放入1个Tpanel构件。在Tpanel构件内放入1个Timage构件,在该构件内装载一幅图像,其AUTOSIZE属性设置为True。另设置1个Ttimer时钟构件。双击Ttm er构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer2Timer(Sender:TObject); CONST s:integer=1; begin i:=i s; image2.left:=arrposi[i]; if i=50 then s:=-1; if i=1 then s:=1; end; 激活TQD_Start窗体的OnCreate事件的处理程序如下: procedure TQD_start.Timer2Timer(Sender:TObject); var ii:Integer; begin i:=0 for ii:=1 to 50 do arrposi[ii]:=ii; end; 显然,适当修改以上程序的相关数值,可增加或减少移动范围,或者改变图像的移动轨迹。   CANVAS画面变换法Delphi在许多构件中都提供了CANVAS画布类,利用该属性也可以设计出漂亮的动画图案。下面以本公司的简介为例,说明如何在软件中实现移动字幕,造成整块字体的动画效果。   首先在"公司简介"子模块的窗体内放入1个Tpanel构件(可将其Be velinner和Beveloutr属性设置为bvlowered,造成显示框内凹的感觉),在该构件内放入1个Timage构件及1个Ttier构件。并在FormCreate 事件中设置动画初值如下: procedure TQD_About.Form Create(Sender:TObject); begin timer1.enabled:=true; timer1.Interval:=10; x:=image1.height 20; image1.Canvas.brush.color:=clGray; pic:=Rect(0,0,image1.width,image1.height); imagel.Canvas.FillRect(pic); end; 双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_About.Timer1Timer(Sender:TObject); begin x:=x-1; if x$#@60;-540 then x:=imagel.height 20; image1.Canvas.font.size:=18 image1.Canvas.font.color:=$120000ff; image1.Canvas.TextOut(80,x,‘江西奇达通讯网络有限公司简介’); image1.Canvas.font.color:=$1200ffff; image1.Canvas.font.size:=12; image1.Canvas.TextOut(80,x 60,‘奇达公司是……’); image1.Canvas.TextOut(40,x 100, ‘…公司简介内容…’); end;   图标颜色变换法Delphi的Additional页的构件中有一个图形构件(Shape),可以十分方便地处理多种几何图形,例如椭圆、正方形、矩形、圆角矩形等, 这为在某些特定的环境下利用颜色变换来实现动画技术提供了方便。   下例在软件封面的某处设定一些TShape构件和一个Ttimer构件,改变图标颜色变化及运行轨迹,形成动感。   由于篇幅有限,仅提供部分双击Ttimer构件的ONTIMER事件的处理程序: procedure TQD_start.Timer1Timer(Sender:TObject); label hhr; begin if (Shape1.brush.color=clRed) then begin Shape1.brush.color:=clWhite; goto hhr; end; if (Shape1.brush.color=clWhite) then begin Shapel.brush.color:=clRed; goto hhr; end; hhr:end; 以上程序均在Windows95、Delphi2.0环境下调试通过 p>  Delphi是Borland公司推出的面向对象的开发工具,用它可以快速地创建Windows应用程序。它拥有快捷的编译器,并提供了丰富的构件集、强大的代码自动生成功能和丰富的数据库管理工具等。下面就作者的经验,谈谈利用Delphi设计动画的一些技巧,并提供完整的示例程序。   Timage构件变换法利用多个Timage构件在同一位置显示图像,而每个Timage构件装入的图像又各不相同,连续显示的效果可以形成动态感。下面以本公司徽标为例,介绍在封面制作中徽标的动作。在封面窗体(TQD_start) 中放入10个(其数目可根据实际情况确定)Timage图像构件和1个time 时钟构件。其中第一个Timage构件的VISIBLE的属性置为False,其他T image构件的VISIBLE属性均设置为True;Timer构件的INTERVAL值可根据要求的动作频率来确定,本例定为200。   Delphi中的Timage构件装入的图形文件格式一般为bmp、ico、em f、wmf等,改变图像时可选用支持上述格式的图形软件。例如,首先将徽标存入文件LS1.BMP,利用PHOTOSHOP软件的Image Size(Pixel Dime nsions)来逐步改变图形的大小,分别按LS2、LS3...LS10.BMP文件名存盘。值得注意的是,图形的背景应和封面背景颜色保持一致,并且不留边框痕迹。图1 ls1,ls2......ls10.bmp 双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer1Timer(Sender:TObject); CONST i:integer=2; begin case i of 2:image1.picture:=image4.picture; 3:image1.picture:=image5.picture; 4:image1.picture:=image6.picture; 5:image1.picture:=image7.picture; 6:image1.picture:=image8.picture; 7:image1.picture:=image9.picture; 8:image1.picture:=image10.picture; 9:image1.picture:=image11.picture; 10:image1.picture:=image12.picture; 11:image1.picture:=image13.picture; 12:begin image1.picture:=image14.picture; i:=2; end; end; i=:i 1 end; end. 不难看出,本程序执行后徽标由大至小不断覆盖,仿佛该徽标由远及近在运动。请注意其运动轨迹是反复由大至小,如果希望其运动效果是由远及近、由近及远,又由远及近,周而复始,可将程序作相应修改,本文由于篇幅所限从略。   如果希望将动作效果再改变一下,徽标由 叫 ⒂山?霸兜耐??,按顺时针或反时针旋转,可利用PHOTOSHOP软件的Rotate来逐步改变图形的转向,然后重新装入Timage构件。显然,图形数量取得愈多则动画效果愈平滑,可根据实际情况选定。   数据库GRAPHICS字段变换法首先在Delphi下建立数据库(例如:QD_T.db),其结构如下:表1 数据库结构然后可利用PHOTOSHOP软件的Image Size或Rotate功能反复编辑图片,按Ctrl C拷贝;切换回Delphi,选中Dbimage构件,按Ctrl v粘贴。Dbimage构件的Stretch属性扩展图片的大小,以便它填满整个Dbima ge构件,即如果图片太大,该构件会自动按比例缩小图片。   在封面窗体(TQD_start)中放入1个Table构件(从Data Access页中选择,其中Name选QDT able,TableName选QD_T.db)、1个DataSource 构件(从Data Access页中选择,其中Name选Q_S ource,DataSet选QD_T able)、1个DBImage构件(从Data Controls页中选择,其中DataSouce 选QD_Source,DataField选QD,Stretch选True)和1个Ttimer时钟构件( 从Data Access页中选择)。   双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer1Timer(Sender:TObject); begin QD_Table.MoveBy(1); if QD_Table.EOF then begin QD_Table.First; end; end; 本程序可参考Timage构件变换法,修改以上源程序来变换动作顺序或旋转方向,以达到要求的动画效果。   Tpanel构件变换法利用Tpanel构件作背景,Timage构件装载图像,图像的移动效果相当平滑,通过改变图像构件的物理位置来描绘动画轨迹或随机漫游。   在封面窗体(TQD_start)中放入1个Tpanel构件。在Tpanel构件内放入1个Timage构件,在该构件内装载一幅图像,其AUTOSIZE属性设置为True。另设置1个Ttimer时钟构件。双击Ttm er构件的ONTIMER事件的处理程序如下: procedure TQD_start.Timer2Timer(Sender:TObject); CONST s:integer=1; begin i:=i s; image2.left:=arrposi[i]; if i=50 then s:=-1; if i=1 then s:=1; end; 激活TQD_Start窗体的OnCreate事件的处理程序如下: procedure TQD_start.Timer2Timer(Sender:TObject); var ii:Integer; begin i:=0 for ii:=1 to 50 do arrposi[ii]:=ii; end; 显然,适当修改以上程序的相关数值,可增加或减少移动范围,或者改变图像的移动轨迹。   CANVAS画面变换法Delphi在许多构件中都提供了CANVAS画布类,利用该属性也可以设计出漂亮的动画图案。下面以本公司的简介为例,说明如何在软件中实现移动字幕,造成整块字体的动画效果。   首先在"公司简介"子模块的窗体内放入1个Tpanel构件(可将其Be velinner和Beveloutr属性设置为bvlowered,造成显示框内凹的感觉),在该构件内放入1个Timage构件及1个Ttier构件。并在FormCreate 事件中设置动画初值如下: procedure TQD_About.Form Create(Sender:TObject); begin timer1.enabled:=true; timer1.Interval:=10; x:=image1.height 20; image1.Canvas.brush.color:=clGray; pic:=Rect(0,0,image1.width,image1.height); imagel.Canvas.FillRect(pic); end; 双击Ttimer构件的ONTIMER事件的处理程序如下: procedure TQD_About.Timer1Timer(Sender:TObject); begin x:=x-1; if x$#@60;-540 then x:=imagel.height 20; image1.Canvas.font.size:=18 image1.Canvas.font.color:=$120000ff; image1.Canvas.TextOut(80,x,‘江西奇达通讯网络有限公司简介’); image1.Canvas.font.color:=$1200ffff; image1.Canvas.font.size:=12; image1.Canvas.TextOut(80,x 60,‘奇达公司是……’); image1.Canvas.TextOut(40,x 100, ‘…公司简介内容…’); end;   图标颜色变换法Delphi的Additional页的构件中有一个图形构件(Shape),可以十分方便地处理多种几何图形,例如椭圆、正方形、矩形、圆角矩形等, 这为在某些特定的环境下利用颜色变换来实现动画技术提供了方便。   下例在软件封面的某处设定一些TShape构件和一个Ttimer构件,改变图标颜色变化及运行轨迹,形成动感。   由于篇幅有限,仅提供部分双击Ttimer构件的ONTIMER事件的处理程序: procedure TQD_start.Timer1Timer(Sender:TObject); label hhr; begin if (Shape1.brush.color=clRed) then begin Shape1.brush.color:=clWhite; goto hhr; end; if (Shape1.brush.color=clWhite) then begin Shapel.brush.color:=clRed; goto hhr; end; hhr:end; 以上程序均在Windows95、Delphi2.0环境下调试通过 下载本文示例代码


Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计Delphi中动画设计
阅读(138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~