我在这里学编程应用篇 共45页[1 2 3 4 5 6 7 >»<... 最后一页]

通过快速变换多幅图像显示来达到动画效果

三、通过快速变换多幅图像显示来达到动画效果

如果我们事先准备好一连串动作的不同时刻的不同画面,短时间内快速地依次显示这些画面,那就象放电影一样,使静止画面变成了动画。单位时间内的静止画面数越多,则动作就越平滑,动画效果也就越好。下面我们举二个这样的例子。

1.自动红绿灯。

制作一个自动红绿灯,每隔一定的时间变换灯的颜色。时间间隔由一组单选钮来设定。

基本原理如下:

在窗体上放三个同样形状的三色红绿灯图像,但三个图像中亮的灯不一样:一个红灯亮,其他两个灯灭;另一个黄灯亮,其他灯灭;还有一个是绿灯亮,其他灯灭。当程序开始运行后,立即将三个图像的位置移到同一个地方。由定时器控制这三个图像的Visible属性,每一时刻只有其中一个图像可见,每隔一定时间变换一幅图。由于三幅图的形状是一样的,又在同一位置,因此感觉上不是图在切换而是亮的灯在变化了。

程序实例:

l 在Form1中的控件(如图5):

(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

 

我在这里学编程应用篇 共45页[1 2 3 4 5 6 7 >»<... 最后一页]