|
|
|
|
|
|
|
|
|
|
|
三、通过快速变换多幅图像显示来达到动画效果 如果我们事先准备好一连串动作的不同时刻的不同画面,短时间内快速地依次显示这些画面,那就象放电影一样,使静止画面变成了动画。单位时间内的静止画面数越多,则动作就越平滑,动画效果也就越好。下面我们举二个这样的例子。 1.自动红绿灯。 制作一个自动红绿灯,每隔一定的时间变换灯的颜色。时间间隔由一组单选钮来设定。 基本原理如下: 在窗体上放三个同样形状的三色红绿灯图像,但三个图像中亮的灯不一样:一个红灯亮,其他两个灯灭;另一个黄灯亮,其他灯灭;还有一个是绿灯亮,其他灯灭。当程序开始运行后,立即将三个图像的位置移到同一个地方。由定时器控制这三个图像的Visible属性,每一时刻只有其中一个图像可见,每隔一定时间变换一幅图。由于三幅图的形状是一样的,又在同一位置,因此感觉上不是图在切换而是亮的灯在变化了。 程序实例: l (1)图像控件:ImgRed、ImgGreen、ImgYellow Picture属性分别为三个灯的图像文件:Green.bmp、Red.bmp和Yellow.bmp。 (2)Option1(0)~Option1(2):单选钮控件组。 (3)按钮CmdAuto、CmdChange和CmdExit: Caption属性分别为“自动”、“改变信号灯”和“关闭”。 (4)Timer1: Interval=1000 (1秒) l 程序代码: Private Sub CmdAuto_Click() Timer1.Enabled = True '启动自动信号灯 End Sub Private Sub CmdChange_Click() If ImgGreen.Visible = True Then '如果原来是绿灯亮则改为黄灯亮 ImgGreen.Visible = False '如果原来是黄灯亮则改为红灯亮 ImgYellow.Visible = True '否则改为绿灯亮 ElseIf ImgYellow.Visible = True Then ImgYellow.Visible = False ImgRed.Visible = True Else ImgRed.Visible = False ImgGreen.Visible = True End If End Sub Private Sub CmdExit_Click() End End Sub Private Sub Form_Load() ImgGreen.Left = ImgRed.Left '使三个灯处于同一位置 ImgGreen.Top = ImgRed.Top ImgYellow.Left = ImgRed.Left ImgYellow.Top = ImgRed.Top Timer1.Enabled = False '定时器关闭 End Sub Private Sub Option1_Click() '定时器的速度由单选钮控制 Timer1.Interval = 1000 End Sub Private Sub Option2_Click() Timer1.Interval = 2000 End Sub Private Sub Option3_Click() Timer1.Interval = 3000 End Sub Private Sub Timer1_Timer() '由定时器来自动按动“改变信号灯”按钮 CmdChange_Click End Sub |
|
| |