图像的随机动态显示

   问题的提出
    目前,Internet上和光盘中提供了许多流行的Windows屏幕保护程序,主要是动画加音乐。如山水、动植物、公司徽标和产品图片,家庭音乐相册等等。您曾想过制作一个家庭音乐相册屏幕保护程序吗?在电脑前连续工作了几小时的您,一定疲惫不堪,休息待机时,音乐响起,一幅幅照片在您面前闪现又消失……重温着往日美好的记忆,一切疲劳顿觉烟消云散!
    Windows屏幕保护程序的开发,在一些书籍已有介绍,在此不加讨论。本文介绍一种实现图像随机动态显示的技术,方法简便,效果良好。
    技术原理
    用TImage组件装入待显示的相片位图,利用随机数发生器(函数Random())控制其在主窗体上的位置,以达到随机移动图像的目的。由TTimer组件控制图像定时显示和隐藏。
   准备工作
    建好应用软件主目录C:\ShowImage及其子目录Images和Sounds。用扫描仪将照片逐一扫入电脑,或者用数码相机拍摄后直接传入电脑,并用Photoshop或其它图像处理软件制作加工,以位图格式文件(.bmp)存入Images目录中。不失一般性,本文只演示一个图像(Diana.bmp)的动态显示。将音乐以波形格式文件(.wav)存入Sounds目录(本文略)。
    实现步骤

12.jpg (8889 字节)

(图一)

    1. 启动Delphi IDE,新建项目ShowImage.dpr,主窗体单元命名为Main.pas,存入C:\ShowImage目录。在主窗体上放入一个TImage组件和一个Ttimer组件。如图1所示:
    主窗体和各组件的主要属性按表1设置:

    表1 主窗体和各组件属性设置

组        件

属        性

设        置
FOM1 BorderStyle bsNone
Caption  
Color cLBlack
Name Mainfom
WindowsState wsMaximized
Imag1 Align alNoe
Name Dianaimage
Picture Diana.bmp
Stretch True
Visible True
Timer1 Enabled True
Interval 1000
Name MoveTimer

 

    表1中Timer1组件的Interval属性为1000,表示间隔时间为1秒。
    2. 建立主窗体MainForm的OnCreate事件,加入下列语句,以初始化随机数发生器:Randomzie;
    3. 创建主窗体MainForm的OnKeyPress事件处理程序,在其Begin与End之间输入语句“Close;”,当按任意键时结束程序运行。
    4. 创建MoveTimer的OnTimer事件处理程序,这是本例程最重要的过程。见程序清单Main.Pas中的过程MoveTimerTimer。
    应注意的是,在算法中应确保图像不超出主窗体的用户区域(Client Area),这很重要。
    5. 编译、运行。软件启动后主窗体为满屏,黑色背景上一位女士微笑着时隐时现,每间隔1秒钟,便在不同的位置闪现,周而复始,具体位置是随机的。本例未设置鼠标响应事件,按键盘任意键,程序结束运行。如图2所示。

12.jpg (8889 字节)

(图二)

    高级话题
    本例可作进一步的完善,例如:
    1. 增加背景音乐。
    2. 交替显示多幅不同图像。
    3. 为图像的显示增加特效,如淡入淡出等。
    限于篇幅,以上话题在此不加讨论,有兴趣的读者不妨一试。
    程序清单略。(海南省海口市
    海甸三西路16号 叶斗彪 570228)