当前位置:文档之家› 《VB程序设计基础》综合实验报告

《VB程序设计基础》综合实验报告

ExitFor
EndIf
Nexti
EndIf
EndSub
EndClass
教师评价
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
2011年11月30日
'取得当前时间
Timer1.Enabled=True
'timer组件产生作用
Timer2.Enabled=True
fontsize= 32‘字体属性
xpos= 0
ypos= 0
EndSub
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
Millisecond=m* 60 * ห้องสมุดไป่ตู้000 +s* 1000 +ms* 10
‘毫秒的计算公式
EndFunction
PrivateSubTimer2_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer2.Tick
'运行时间=绝对时间-开始时间
ps=pass.TotalMilliseconds()
'转换为毫秒
If(ps<timept(ircsum- 1))Then
Fori= 1Toircsum- 1
Ifps<timept(i)Then
EndIf
Ifps>timept(i- 1)Then
' labellrc.txt = lrc(i - 1)
Dimdrawpoint1AsNewPointF(50.0F,550.0F)
Dimdrawpoint2AsNewPointF(55.0F,555.0F)
DimpsAsDouble
DimiAsInteger
DimtimeptAsInteger()
pass=System.DateTime.Now-startime
imageindex= 0返回,避免运行时出现错误。
(2)播放音乐。此目标的细化由引入控件、打开和停止音乐3部分组成。其中控件为WAVPlayer.ocx,打开文件由语句addFile("播放目标歌曲名及其扩展名","循环播放的次数")实现,停止文件则相应的由stoplay("播放目标歌曲名及其扩展名","循环播放的次数")实现。
‘图片显示的起始点为屏幕左上角
imagename=Directory.GetFiles("pic","*.jpg")
‘从文件中读取图片
imageindex= 0
‘索引初值为0
song.addFile("青花瓷.mp3","2")
‘从文件夹中读取歌曲文件
ReadLRC()
‘调用读取歌词的函数体
startime=System.DateTime.Now
7、不可以抄袭,程序封面应注明班级、姓名、学号,执行文件(exe)的版本-公司属性应为班级+姓名+学号,Gdiplus所实现的文字或图形特效应有所区别。(抄袭作品是违法的行为请学生注意,雷同作品双方都酌情扣分)
8、工程目录以:班级+姓名+学号的形式命名。例如:信管B061+张三+20082510203.rar,最后将该目录压缩成一个*.rar文件。
(3)读取歌词。该模块则是要把硬盘上的文件读到内存中去,并把歌词中的时间部分放到时间数组中,歌词放到歌词数组中区。具体的实现步骤,打开文件;声明两个数组;用函数words.spring(New[char](){“]”}c)和标识“[”把歌词拆成一句一句的;同理用标识“]”再把一句一句的分成时间和文本两部分;把分割出来的时间和文本赋值到两个数组中去;走后用过msdn和搜索相关代码进行整合。
(5)显示歌词。确定当前显示元素的区间,通过draw类的运用,包括drawbrush(显示字体颜色)、drawpoint(字体的初始位置)、drawfont(字体类型和字号大小),用语句Me.CreateGraphics().DrawString(作用对象,drawpoint,drawfont,drawbrush)来实现同步显示歌词。
DimircsumAsInteger‘声明歌词总数变量ircsum为整型
DimpassAsTimeSpan'时间间隔
DimiAsInteger‘声明证型变量i表明个数
DimstartimeAsDateTime‘起始时间
DimlrcAsString()‘歌词存放字符串
Dimxpos,ypos,fontsizeAsInteger‘表征歌词显示的相关属性的整型变量
splittemp=alltext.Split(New[Char]() {"]"c})
timepoint(i) =splittemp(0)
lrc(i) =splittemp(1)
‘splittemp数组中有2个元素为时间和文本,前者赋值给timepoint,后者赋给lrc
timept(i) =lisecond(timepoint(i))
lrc=NewString() {}
ReDimlrc(lines.Length)
Ifthisobject.Length> 8Then
temp=thisobject.Substring(0, 1)
Iftemp>="0"Andtemp<="9"Then
‘排除文件开头非正文部分的影响,及歌曲是否正式开始的判断
‘Timer函数体
Ifimagename.GetLength(0) <= 0Then
Return
EndIf
Me.BackgroundImage=Image.FromFile(imagename(imageindex))
‘背景图片从文件中获得
imageindex=imageindex+ 1
‘实现背景图片的循环
(4)定时切换歌词。通过当前时间找到文本数组合适的下标,把当前时刻的歌词读取出来。首先用循环语句从时间数组的第一个元素开始遍历,将要进行比较的时间数组转变为double型,并将时间转换为毫秒(用函数体FunctionMillisecond实现)进行时间前后的比较,找到第一个比当前时间大的元素;判断前一个元素的时间是否比当前时间小,则此时当前界面应该播放的歌曲元素为前一个元素的内容,当前变化元素的下标为前一个元素的下标,用此下标取文本数组的元素。
Me.Close()
EndSub
‘程序运行时,按任意键停止运行
PrivateSubReadLYC()
‘读取歌词的函数体
DimalltextAsString‘整个LYC文件的内容存放变量
DimlinesAsString()‘每行的存放数组
DimtempAsString
DimsplittempAsString()‘用于分隔时间和歌词文本的字符串数组
i=i+ 1
ircsum=i
‘实现循环
EndIf
EndIf
Nextthisobject
sr.close()
EndUsing
CatchEAsexception
EndTry
EndSub
PrivateFunctionMillisecond(ByValTextAsString)AsDouble‘时间转换为毫秒的函数体
‘同步歌词显示的函数体
Ifircsum<= 2Then
Return
EndIf
DimdrawfontAsNewFont("楷体_GB2312", 32)
Dimdrawbrush1AsNewSolidBrush(Color.Blue)
'确定字体特效双色阴影
Dimdrawbrush2AsNewSolidBrush(Color.Purple)
Me.CreateGraphics().DrawString(lrc(i- 1),drawfont,drawbrush1,drawpoint1)
'画出内容
Me.CreateGraphics().DrawString(lrc(i- 1),drawfont,drawbrush2,drawpoint2)
‘产生阴影效果
DimtimepointAsString()‘用于存放时间的数组
Try
UsingsrAsStreamReader=NewStreamReader("青花瓷.lyc")
alltext=sr.ReadToEnd()
alltext=alltext.Replace(vbCr,"")
alltext=alltext.Replace(vbLf,"")
五、项目编写步骤
ImportsSystem.IO
’外部输入函数库
PublicClassmusicplayer孔凡浩
DimimageindexAsInteger‘声明图片索引imageindex为整型变量
DimimagenameAsString()‘声明图片存放变量imagename为数组
DimtimeptAsDouble()‘声明timept为数值型数组存放时间单元用于时间的比较
华北科技学院计算机系综合性实验
相关主题