自动隐藏的声像按钮

 

  随着计算机的日益普及和多媒体技术的不断发展,多媒体计算机辅助教学(MCAI)软件正改变人们传统的学习方式。MCAI软件的操作界面赏心悦目,特别是具有音响效果且能自动隐藏的图像按钮或菜单,图文声并茂,确实为软件添色不少,深受用户喜爱。以下介绍用Delphi实现上述功能的技术。
  准备工作
  建好应用软件主目录C:\AutoHide及其子目录Images和Sounds。作为软件主界面的背景图像的位图文件Background.bmp,及作为按钮图像的位图Chimera.bmp都存入Images目录中。将声音文件Growl.wav存入Sounds目录。
  BackgroundImage的Picture属性装入Background.bmp,PictureImage的Picture属性装入  Chimera.bmp。ButtonImage重叠于PictureImage之上,置于背景图像的特定位置。
  图像按钮
  1. 启动Delphi 3.0 IDE,新建项目AutoHide.dpr,主窗体单元命名为Main.pas,存入C:\AutoHide目录。在主窗体上放入三个TImage组件,主要属性按表1设置。
  表1 主窗体和各组件属性设置

组 件 组 件 设 置
Form1 Caption
Name
Auto Hide Button
MainForm
Image1 Align
Name
Picture
Stretch
Visible
alClient
BackgroundImage
(TBitmap)
True
True
Image2




Align
Name
Picture
Stretch
Transparent
Visible
alNone
PictureImage
(TBitmap)
True
True
True
False
Image3




Align
Cursor
Name
Picture
Stretch
alNone
crHandPoint
ButtonImage
(None)
False

  2. 建立ButtonImage的OnMouseMove事件,当鼠标移至其上时PictureImage显现:
  PictureImage.Visible:=True;
T69.jpg (15322 字节)

  3. 建立BackgroundImage的OnMouseMove事件,当鼠标移开ButtonImage时PictureImage隐藏:
  PictureImage.Visible:=False;
  4. 创建ButtonImage(注意:不是PictureImage)的OnClick事件,以响应鼠标点击完成规定动 作。不失一般性,在此仅显示一行信息。
  MessageBeep($FFFF);
  ShowMessage('Welcome to the Delphi.');
  5. 编译、运行。软件启动后进入主界面,在背景图像上没有菜单,也没有按钮,如图1所示。
  当鼠标移至猎豹头部时,豹头变成狮头按钮,且鼠标变为手指,如图2所示。
  当鼠标移出狮头范围时,狮头隐藏,恢复主界面图像。若点击狮头按钮,则出现信息窗(见图3):
  Welcome to the Delphil.
T70.jpg (14719 字节)

  音响效果
  如果要在上述“自动隐藏”按钮加上音响效果,可以在狮头出现时利用PlaySound()播放一个声音文件(.wav)。
  但是,不能将PlaySound()直接加入ButtonImage的OnMouseMove事件中。这是因为,当鼠标在按钮上移动时,PlaySound()会不断重复执行。务必确保按钮出现时声音文件只播放一次!须如此这般:
  1. 为调用PlaySound()函数,并控制声音文件的播放次数,在Main.pas单元的implementation段加入:
  uses
  mmsystem;
  var
  noHide: Boolean;
T71.jpg (13796 字节)

  2. 创建主窗体MainFrom的OnCreate事件处理程序,以初始化noHide变量:
  noHide:=True;
  3. 将ButtonImage的OnMouseMove事件处理程序(Begin与End之间的语句)改为:
  if noHide then
  begin
  PictureImage.Visible:=True;
  PlaySound('Sounds\Growl',0,SND_ASYNC);
  noHide:=False;
  end;
  4. 将BackgroundImage的OnMouseMove事件处理程序(begin与end之间的语句)改为:
  PictureImage.Visible:=False;
  noHide:=True;
  重新编译和运行。此时,当鼠标移至猎豹头部时,张牙舞爪、咆哮着的狮头闪现,惊心动魄。
  以上例程编译和运行环境是Delphi 3.和中文Windows 98。(海南大学 叶斗彪 570228)