第六天、制作多媒体界面
小蘑菇:叮当姐姐,我明年就要毕业了,听说现在用人单位都很挑剔的,以前的师兄就说过要把自己的简历制作的与众不同,最好还能够做成多媒体格式的文档,这样别人对你的印象就会好很多。那么用VB能不能实现呢?
小叮当:只有你想不到的,没有VB做不到的,你的意思是不是要我教你怎么做多媒体简历呢?
小蘑菇:其实不需要完整的简历,只要你教我怎样做出一个多媒体界面就可以了。
小叮当:呵呵,原来如此呀,那好,进行就来制作一个多媒体简历。
小蘑菇:不过我还有要求的,就是能够把我的相片放上去,同时还要能够显示一段文字,最好还要能够显示出动画,你看这些可以实现吗?
小叮当:你这个家伙,就会给我出难题,这有什么难的?看好了,俗话说人有多大胆,地有多大产,我怎么着也要给你折腾出来。
小蘑菇:嘿嘿,叮当姐姐看起来蛮机灵的,实际上也会中我的圈套,哈哈。
……(叮当思考中)
小叮当:好了,基本上搞定了,先来添加所需要的控件。
1、新建一个工程,将Form1窗口的BorderStyle属性设置为“0-None”,这样可以不显示边框和相关的元素,接着将WindowState属性设置为“2-Maximized”,这样程序在运行的时候能够将窗口最大化显示。
2、添加2个PICture控件,它们分别用于显示你的相片和一段动画。其中显示相片的Picture控件Appearance属性要设置为“0-Flat”,这样将控件的显示风格为平面视觉效果,接着把AutoRedraw属性设置为“True”,它可以允许自动重绘控件上的图象和文字将其设为False能够避免屏幕显示文字时候的闪烁感。同时,AutoSize属性也要设置为“True”,这样可以自动调整控件大小以显示全部要显示内容。对于另外一个用于显示动画的Picture控件,只需要将AutoSize属性设置为True,让它能够自动调整控件大小来显示全部内容即可。
3、在Form1窗口中添加两个MicroSOFt Media Control控件,它们分别用于连续播放背景音乐和连续播放动画。这两个控件的名称分别设置为MCI1和MCI2,Visible属性全部设置为“False”,这样将控件隐藏起来由程序去控制播放。
4、在窗口中添加一个Timer控件,利用这个控件显示滚动的文字信息,并控制动画、声音的重放,需要将它的Interval属性设置为“200”。
所有的控件添加完成之后如图所示。
小蘑菇:OK,下面再来看看源代码部分吧。
小叮当:这个程序的工作原理是先对读取文件的盘符路径进行处理,并控制多媒体控件MCI1、MCI2分别播放背景音乐和动画。Timer1控件用来完成背景音乐和动画的连续循环重放,并控制要显示的文字信息向上滚动显示。然后由Picture1_MouseUp事件来完成关闭程序的任务,也就是说当鼠标处于画面Picture1范围内时按鼠标左键,则关闭多媒体控件MCI1、MCI2,并退出程序。
程序的代码分别如下:
1、双击Form1窗口并选择“通用”对象,输入下列代码:
Option Explicit
Dim CurY, CurY1, Temp As Single, s1(1 To 3), s2(1 To 3) As String
2、双击Form1窗口,选择“Load”事件并输入下列代码:
Private Sub Form_Load()
Dim DiskPathName As String, x, y As Single /变量DiskPathName用于存放应用程序所在的盘符和路径
Move 0, 0, Screen.Width, Screen.Height /根据屏幕分辨率重新调整各窗口和控件的位置
x = (ScaleWidth - Picture1.Width) / 2:
y = (ScaleHeight - Picture1.Height) / 2
Picture1.Move x, y
Picture2.Move Picture2.Left + x, Picture2.Top+y
s1(3) = " 程序功能:": s2(3) = "小蘑菇的多媒体简历" /要滚动显示的文字信息
S1(2) = " 设计单位:": s2(2) = "xxx大学计算机系"
s1(1) = " 设计者:": s2(1) = "小蘑菇"
CurY = Picture1.CurrentY: CurY1 = CurY: Temp = 8000 - Picture1.CurrentY /保存Picture1画面的起始坐标
DiskPathName = App.Path
If Right(DiskPathName, 1) = "\" Then
DiskPathName = Left(DiskPathName, Len(DiskPathName) - 1) /判断应用程序所在路径是否为根目录,若为根目录则去掉路径中的 "\"
End If
Picture1.Picture = LoadPicture(DiskPathName + "\demo.bmp") /加载需要显示的图象
Form1.BackColor = QBColor(0) /设置Form1的背景为黑色
MCI1.filename = DiskPathName + "\demo.wav" /打开并播放背景音乐
MCI1.Command = "Open"
MCI1.Command = "Play"
MCI2.DeviceType = "AVIVideo" /打开并播放动画
MCI2.filename = DiskPathName + "\demo.avi"
MCI2.hWndDisplay = Picture2.hWnd /让动画在Picture2中播放
MCI2.Command = "Open"
MCI2.Command = "Play"
End Sub
3、选择Picture1的“MouseUp”事件并输入下列代码:
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then /判断是否按下鼠标的左键,是则关闭多媒体控件MCI1、MCI2,并卸载退出工程
MCI1.Command = "Stop"
MCI1.Command = "Close"
MCI2.Command = "Stop"
MCI2.Command = "Close"
Unload Me
End If
End Sub
4、双击Timer1控件并输入下列代码:
Private Sub Timer1_Timer()
Dim I As Integer /保存要显示文字信息的起始纵坐标,以便对下一屏要显示内容进行准确定位
CurY = CurY1
If MCI1.Mode = mciModeStop Then /如背景音乐播放完毕,则继续重复播放
MCI1.From = 0
MCI1.Command = "Play"
End If
If MCI2.Mode = mciModeStop Then /如动画播放完毕,则继续重复播放
MCI2.From = 0
MCI2.Command = "Play"
End If
If Temp > 3000 Then /Temp的值应根据所显示的背景图象大小和要显示的文字信息量及文字显示位置来选取
Picture1.Cls /停止向上滚动显示
For I = 1 To 3 /清除Picture1画面的文字信息
Picture1.CurrentY = 8000 - CurY /用Picture1.CurrentY来设定Picture1.Print语句所要输出内容的纵坐标
Temp = Picture1.CurrentY
Picture1.ForeColor = QBColor(13): Picture1.Print " "; s1(I); " "; /设置要显示文字的颜色为粉色
Picture1.ForeColor = QBColor(10): Picture1.Print s2(I) /设置要显示文字的颜色为绿色
CurY = CurY + 800 /设置要显示文字的行间距
Next I
CurY1 = CurY1 + 200 /改变下一屏要显示文字起始纵坐标,即两屏间文字的纵坐标差
End If
End Sub
所有代码完成之后先把它编辑为exe格式的文件,然后把你的相片、动画和背景音乐文件复制到exe文件的目录中,并将它们分别命名为Demo.bmp、Demo.avi和Demo.wav。然后再运行程序看看,这时屏幕背景为黑色,在屏幕中间适当位置显示一幅图象,在此图象右上角适当位置连续播放动画,显示的文字信息从屏幕下面向上面滚动,至中间指定位置停止滚动,同时在此过程中连续播放背景音乐。看看你的你的大头照、动画和文字,不是全部显示出来了吗?
小蘑菇:行呀,叮当姐姐还真的很厉害!我算是服了你。但是如果我想实现走马灯形式的文字循环滚动怎么办呢?
小叮当:这也简单呀,只要改变横坐标Picture1_CurrentX就可以实现从左右二个方向往中间滚动显示,这部分我就不多说了,还是你自己参照着上面的代码修改完成吧。
小蘑菇:好吧,我再琢磨一下。嘿嘿,就这么轻轻松松的把我的多媒体简历界面做好了,看来下学期我可以多一些时间来玩游戏了,哈哈。