《VB程序设计基础》综合实验报告_第1页
《VB程序设计基础》综合实验报告_第2页
《VB程序设计基础》综合实验报告_第3页
《VB程序设计基础》综合实验报告_第4页
《VB程序设计基础》综合实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北科技学院计算机系综合性实验报告PAGE 第4页华北科技学院计算机系综合性实验实验报告课程名称VB程序设计基础实验学期2011至2012学年第一学期学生所在系部年级专业班级学生姓名学号任课教师陈超实验成绩计算机系制

《VB程序设计基础》课程综合性实验报告开课实验室:基础一2011年11月30日实验题目音乐播放器的制作实验目的能熟练应用VB进行编程,提高同学们利用VB的综合应用能力。使用VB编写一个能同步显示歌词并切换背景的MP3播放器。二、设备与环境计算机、VisualStudio2005三、实验内容1、全屏窗口。2、读取某目录下的图片并动态切换。3、播放音乐。4、读取音乐对应的歌词文件并同步显示在屏幕上。5、使用Gdiplus实现文字或图形特效。6、程序运行正确,并提交项目工程以及项目设计、项目编写的关键步骤。7、不可以抄袭,程序封面应注明班级、姓名、学号,执行文件(exe)的版本-公司属性应为班级+姓名+学号,Gdiplus所实现的文字或图形特效应有所区别。(抄袭作品是违法的行为请学生注意,雷同作品双方都酌情扣分)8、工程目录以:班级+姓名+学号的形式命名。例如:信管B061+张三+20082510203.rar,最后将该目录压缩成一个*.rar文件。9、作品上交至40大作业文件夹中,帐号:VB@2011密码:VB@2011四、项目设计该程序的实现主要要有以下5个模板实现;(1)更换背景。此目标的细化由窗口、图片序列、定时器3大部分组成。其中窗口涉及到是否全屏、有无边框、背景图片处理,全屏的实现则由图片的宽、高及起点决定,而其他二者则通过Form的属性栏配置;图片序列的处理,首先应从文件中获取,并声明1个数组进行存储,读取时用image.fromfile(filename)从文件中获得;定时器模块则有时间间隔和切换图片2个部分,涉及到创建timer组件及其属性项的修改与索引数组的声明及调用。具体的细节处理涉及屏幕大小不知,文件夹中有无图片、图片个数是多少,通过imageindex>=imagename.GetLength(0)来判断,由imageindex=0返回,避免运行时出现错误。(2)播放音乐。此目标的细化由引入控件、打开和停止音乐3部分组成。其中控件为WAVPlayer.ocx,打开文件由语句addFile("播放目标歌曲名及其扩展名","循环播放的次数")实现,停止文件则相应的由stoplay("播放目标歌曲名及其扩展名","循环播放的次数")实现。(3)读取歌词。该模块则是要把硬盘上的文件读到内存中去,并把歌词中的时间部分放到时间数组中,歌词放到歌词数组中区。具体的实现步骤,打开文件;声明两个数组;用函数words.spring(New[char](){“]”}c)和标识“[”把歌词拆成一句一句的;同理用标识“]”再把一句一句的分成时间和文本两部分;把分割出来的时间和文本赋值到两个数组中去;走后用过msdn和搜索相关代码进行整合。(4)定时切换歌词。通过当前时间找到文本数组合适的下标,把当前时刻的歌词读取出来。首先用循环语句从时间数组的第一个元素开始遍历,将要进行比较的时间数组转变为double型,并将时间转换为毫秒(用函数体FunctionMillisecond实现)进行时间前后的比较,找到第一个比当前时间大的元素;判断前一个元素的时间是否比当前时间小,则此时当前界面应该播放的歌曲元素为前一个元素的内容,当前变化元素的下标为前一个元素的下标,用此下标取文本数组的元素。(5)显示歌词。确定当前显示元素的区间,通过draw类的运用,包括drawbrush(显示字体颜色)、drawpoint(字体的初始位置)、drawfont(字体类型和字号大小),用语句Me.CreateGraphics().DrawString(作用对象,drawpoint,drawfont,drawbrush)来实现同步显示歌词。五、项目编写步骤ImportsSystem.IO’外部输入函数库PublicClassmusicplayer孔凡浩DimimageindexAsInteger‘声明图片索引imageindex为整型变量DimimagenameAsString()‘声明图片存放变量imagename为数组DimtimeptAsDouble()‘声明timept为数值型数组存放时间单元用于时间的比较DimircsumAsInteger‘声明歌词总数变量ircsum为整型DimpassAsTimeSpan'时间间隔DimiAsInteger‘声明证型变量i表明个数DimstartimeAsDateTime‘起始时间DimlrcAsString()‘歌词存放字符串Dimxpos,ypos,fontsizeAsInteger‘表征歌词显示的相关属性的整型变量PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load‘主函数体Me.Size=My.Computer.Screen.WorkingArea.SizeMe.Location=NewSystem.Drawing.Point(0,0)‘图片显示的起始点为屏幕左上角imagename=Directory.GetFiles("pic","*.jpg")‘从文件中读取图片imageindex=0‘索引初值为0song.addFile("青花瓷.mp3","2")‘从文件夹中读取歌曲文件ReadLRC()‘调用读取歌词的函数体startime=System.DateTime.Now'取得当前时间Timer1.Enabled=True'timer组件产生作用Timer2.Enabled=Truefontsize=32‘字体属性xpos=0ypos=0EndSubPrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick‘Timer函数体Ifimagename.GetLength(0)<=0ThenReturnEndIfMe.BackgroundImage=Image.FromFile(imagename(imageindex))‘背景图片从文件中获得imageindex=imageindex+1‘实现背景图片的循环Ifimageindex>=imagename.GetLength(0)Thenimageindex=0EndIfEndSubPrivateSubForm1_KeyDown(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.KeyEventArgs)HandlesMyBase.KeyDownMe.Close()EndSub‘程序运行时,按任意键停止运行PrivateSubReadLYC()‘读取歌词的函数体DimalltextAsString‘整个LYC文件的内容存放变量DimlinesAsString()‘每行的存放数组DimtempAsStringDimsplittempAsString()‘用于分隔时间和歌词文本的字符串数组DimtimepointAsString()‘用于存放时间的数组TryUsingsrAsStreamReader=NewStreamReader("青花瓷.lyc")alltext=sr.ReadToEnd()alltext=alltext.Replace(vbCr,"")alltext=alltext.Replace(vbLf,"")lines=alltext.Split(New[Char](){"["c})‘用标识符【来分隔每行ForEachthisobjectAsStringInlinesi=0ircsum=0‘I,ircsum的初始化timepoint=NewString(){}ReDimtimepoint(lines.Length)lrc=NewString(){}ReDimlrc(lines.Length)Ifthisobject.Length>8Thentemp=thisobject.Substring(0,1)Iftemp>="0"Andtemp<="9"Then‘排除文件开头非正文部分的影响,及歌曲是否正式开始的判断splittemp=alltext.Split(New[Char](){"]"c})timepoint(i)=splittemp(0)lrc(i)=splittemp(1)‘splittemp数组中有2个元素为时间和文本,前者赋值给timepoint,后者赋给lrctimept(i)=Me.Millisecond(timepoint(i))i=i+1ircsum=i‘实现循环EndIfEndIfNextthisobjectsr.close()EndUsingCatchEAsexceptionEndTryEndSubPrivateFunctionMillisecond(ByValTextAsString)AsDouble‘时间转换为毫秒的函数体DimmAsInteger‘定义m为分钟变量DimsAsInteger‘定义s为秒变量DimmsAsInteger‘定义ms为百分秒变量m=Integer.Parse(Text.Substring(0,2))s=Integer.Parse(Text.Substring(3,2))ms=Integer.Parse(Text.Substring(6,2))Millisecond=m*60*1000+s*1000+ms*10‘毫秒的计算公式EndFunctionPrivateSubTimer2_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer2.Tick‘同步歌词显示的函数体Ifircsum<=2ThenReturnEndIfDimdrawfontAsNewFont("楷体_GB2312",32)Dimdrawbrush1AsNewSolidBrush(Color.Blue)'确定字体特效双色阴影Dimdrawbrush2AsNewSolidBrush(Color.Purple)Dimdrawpoint1AsNewPointF(50.0F,550.0F)Dimdrawpoint2AsNewPointF(55.0F,555.0F)DimpsAsDoubleDimiAsIntegerDimtimeptAsInteger()pass=System.DateTime.Now-startime

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论