- 2.26 MB
- 2022-04-29 14:33:06 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'VB.NET程序设计实用教程电子讲稿10
本章任务可擦写图形轮廓视频文件播放器音频播放器
本章要点GDI+与绘图命名空间多媒体的含义视频文件播放器本章要点可擦写图形轮廓
10.1.3利用GDI+绘制图形的方法步骤在System.Drawing命名空间中,最核心的类是Graphics类。该类提供很多方法,利用它用户可以绘制出直线、曲线、椭圆等各种几何图形。在VB.NET中,图形一般是在窗体或图形框控件(PictureBox)上进行绘制。在绘图之前,应在指定的窗体或图形框控件上创建一个Graphics类的实例,创建了Graphics的实例后,才可以调用Graphics类的绘图方法。使用Graphics类需特别注意一点:Graphics类的构造器(SubNew)是私有的,不能直接实例化,即不能使用类似下面的语句来创建Graphics类的一个实例:Dim对象名称AsNewSystem.Drawing.Graphics()要创建Graphics类的实例,一般需经过两步,一是定义一个Graphics类的对象,二是调用窗体或图片框控件的CreateGraphics方法,以下语句将在PictureBox1上创建一个名为pic的Graphics类的实例:
10.1.4与绘图相关的对象1.Graphics对象Graphics对象就相当于一张画布,可以调用它的绘图方法在其上绘图。在绘制图形之前一定要先创建Graphics对象。创建Graphics对象的方法—般有三种,分别如下。(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象当响应窗体或控件的Paint事件时,传回的事件参数PaintEventArgs中包含着窗体或控件的Graphics对象,在其上可以进行绘图工作。利用该方式创建Graphics对象的例子如下:PrivateSubForm1_Paint(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.PaintEventArgs)HandlesMyBase.PaintDimGAsSystem.Drawing.Graphics=e.GraphicsEndSub
10.1.4与绘图相关的对象(2)使用窗体或控件的CreateGraphics方法窗体和控件类都有一个CreateGraphics方法,通过该方法可以在程序中生成此窗体或控件所对应的Graphics对象。这种方法一般应用于对象已经存在的情况下。如下所示:DimGAsSystem.Drawing.GraphicsG=Me.CreateGraphics()注意:Graphics是命名空间System.Drawing中的一个类,使用时应加上命名空间的名称。为了能够直接使用类名,可用ImportsSystem.Drawing语句引入System.Drawing命名空间,引入后就可以直接使用类名Graphics,而不需再加命名空间前缀。(3)使用Image的派生类创建Graphics对象。使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在VB.NET中对图像进行处理的场合。如下:DimBAsNewBitmap("c:MYPIC.BMP")"根据图像文件生成Bitmap对象DimGAsGraphics"定义Graphics对象G=Graphics.FromImage(B)"生成Graphics类的对象Graphics类有许多绘图方法,关于Graphics类的绘图方法,请读者参阅附录2。
10.1.4与绘图相关的对象2.Pen对象Pen对象(又称画笔对象)主要用来绘制线条、多边形、曲线等几何图形,具有宽度、样式和颜色三种属性。Pen对象的宽度用来确定所画的线条宽度,默认的Pen对象宽度是一个像素单位;Pen对象的颜色确定了所画的线条颜色;Pen对象的样式确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线等。除此以外,在VB.NET中,还可以通过属性设置来设定Pen对象绘制的线条的起点和终点的样式。
10.1.4与绘图相关的对象(1)Pen对象的创建Pen类的构造器有四种,使用方法如下。①创建某一颜色的Pen对象:PublicSubNew(Color)②创建某一刷子样式的Pen对象:PublicSubNew(Brush)③创建某—刷子样式并具有相应宽度的Pen对象:PublicSubNew(Brush,Single)④创建某一颜色和相应宽度的Pen对象:PublicSubNew(Color,Single)
10.1.4与绘图相关的对象Pen类的构造器中有一个Color结构的参数,Color结构在GDI+中是用ARGB来表示的,其中A代表Alpha值、R代表红色分量值、G代表绿色分量、B代表蓝色分量值。Color结构的A、R、G、B属性分别代表颜色的四种分量的值,Color结构还具有很多表示系统定义颜色的属性,如:Color.White代表白色、Color.Green代表绿色等。例如,下列的两条语句将分别创建名为Pen1和Pen2的两个Pen对象:DimPen1AsNewPen(Color.Yellow):DimPen2AsNewPen(Color.Blank,5)
10.1.4与绘图相关的对象(2)Pen对象的常用属性①Alignment属性:用来获取或设置此Pen对象的对齐方式。②Color属性:用来获取或设置此Pen对象的颜色。③Width属性:用来获取或设置此Pen对象的宽度。④DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式。该属性是一个DashStyle枚举型的值,枚举成员名称及其说明如表10-1所示
10.1.4与绘图相关的对象DashStyle枚举型的成员及其说明
10.1.4与绘图相关的对象⑤DashCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值,取值有:Flat(每一划线段的两端均为方形的方帽)、Round(每一划线段的两端均为圆角的圆帽)、Triangle(每一划线段的两端均为带尖的三角帽)。⑥StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式。⑦EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式。⑧PenType属性:用来获取用此Pen对象绘制的直线的样式。是一个DashStyle枚举型的值。
10.1.4与绘图相关的对象3.Font对象可以使用Font对象(字体对象)来建立自定义字体,该对象在建立之后就不能被修改,因此若程序中需要不同的字体,只有建立多个不同的Font对象。Font对象的构造器有很多重载版本,感兴趣的读者可参考相应的资料,此处不再赘述。Font对象的常用属性如表10-2所示
10.1.4与绘图相关的对象Font对象的常用属性
10.1.4与绘图相关的对象例如,有下列程序(已经引入命名空间System.Drawing):PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimMyFontAsFont=NewFont("宋体",20,FontStyle.BoldOrFontStyle.Italic)"创建字体DimgAsGraphics:g=Me.CreateGraphics()"创建Graphics对象g.DrawString("字体演示与图形绘制。",MyFont,NewSolidBrush(Color.SlateBlue),10,10)MyFont.Dispose():g.Dispose()"释放绘图对象EndSub程序的执行结果如图10-1所示
10.1.4与绘图相关的对象4.Brush对象Brush类(又称画刷)也不能被实例化,一般使用它的派生类。派生类主要有:SolidBrush(单色画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混合色渐变画刷)和TextureBrush(纹理画刷)。大部分的Brush类型都定义在System.Drawing命名空间中。HatchBrush、LinearGradientBrush和PathGradientBrush等画刷定义在System.Drawing.Drawing2D命名空间中
10.1.4与绘图相关的对象(1)SolidBrush画刷SolidBrush类用来定义单一颜色的Brush,其构造器如下。PublicSubNew(ByValcolorAsColor)例如:DimMyBrushAsNewSolidBrush(Color.Blue)该语句创建了一个名为MyBrush的蓝色画刷。(2)HatchBrush画刷SolidBrush类用来定义阴影画刷,可以定义前景色和背景色及阴影风格。前景色定义线条的颜色,背景色定义各线条之间间隙的颜色
10.1.4与绘图相关的对象HatchBrush类的构造器有两种,分别如下:[格式1]:PublicSubNew(ByValhatchstyleAsHatchStyle,ByValforeColorAsColor)[功能]:以HatchStyle指定的图案或阴影方式和foreColor指定的前景色创建画刷,默认的背景色为黑色。[格式2]:PublicSubNew(ByValhatchstyleAsHatchStyle,ByValforeColorAsColor,ByValbackColorAsColor)[功能]:创建画刷。参数HatchStyle指定的图案或阴影方式,foreColor参数指定前景色,backColor参数指定背景色
10.1.4与绘图相关的对象HatchBrush画刷具有三个属性,分别如下:①BackgroundColor属性:获取此HatchBrush对象的背景色。②ForegroundColor属性:获取此HatchBrush对象的前景色。③HatchStyle属性:获取此HatchBrush对象的阴影样式。HatchBrush对象的阴影样式有很多,表10-3仅列出一些常用的阴影样式
10.1.4与绘图相关的对象HatchBrush对象的阴影样式
10.1.4与绘图相关的对象(3)LinearGradientBrush画刷LinearGradientBrush是渐变画刷的一种,用来产生线型渐变效果。常用的渐变效果是由两个颜色逐渐变化而来的。LinearGradientBrush类的构造器有多种格式,最常用的格式如下。[格式]:PublicSubNew(ByValpoint1AsPoint,ByValpoint2AsPoint,ByValcolor1AsColor,ByValcolor2AsColor)[功能]:创建线性渐变画刷。该构造器有四个参数,其中Point1是表示渐变的起始点,Point2是表示渐变的终结点,Color1表示的渐变的起始色,Color2表示的是渐变的终止色。此处的Point1和Point2是Point结构型的变量,Point结构表示一个点,有两个成员x和y,分别表示点的横坐标和纵坐标
10.1.4与绘图相关的对象例如,有如下程序(已引入命名空间System.Drawing):PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimMyPicAsGraphics=Me.CreateGraphics()"生成图形对象DimMyBrushAsNewLinearGradientBrush(NewPoint(0,0),_NewPoint(10,10),Color.Blue,Color.Red)"生成渐变画刷MyPic.FillRectangle(MyBrush,5,5,150,80)"填充矩形MyBrush.Dispose():MyPic.Dispose()"释放对象EndSub程序的执行结果如图10-2所示
10.2任务1:可擦写图形轮廓——图形编程与鼠标事件任务10-1描述:创建一个让用户画椭圆的程序,当用户按下并拖动鼠标时,将出现一个椭圆轮廓,该椭圆轮廓表示所画椭圆的大小,如图10-3所示。当用户松开鼠标键时,将在窗体上绘制出用蓝色填充的椭圆,如图10-4所示。图10-3绘制的椭圆轮廓图10-4最后绘制的椭圆
10.2任务:可擦写图形轮廓——图形编程与鼠标事件任务分析:为显示绘图轮廓,可使用两个Point结构的变量StartPt和EndPt,分别用来存放鼠标按下时的坐标和当前坐标。可通过下述方法来实现“可擦写”的轮廓并画图:当用户按下鼠标按钮时,在StartPt变量中记录鼠标的x,y坐标,同时用鼠标的x,y坐标初始化EndPt变量,然后设置画笔的颜色,以画出所需图形的轮廓。每当鼠标移动时,可两次画图:一次是把画笔的颜色设置为背景色,然后在老地方绘图以便擦去已画过的“可擦写”图形轮廓,一次是把画笔再设置成需要的颜色,再在新位置上画出当前所需的图形轮廓,然后在变量EndPt中记录鼠标新位置的x,y坐标。最后当用户释放鼠标按钮时,擦除上次的“可擦写”图形轮廓,并以最终的色彩画出图形。
10.2任务:可擦写图形轮廓——图形编程与鼠标事件任务实现:1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH10”,项目名为“Task10_1”。2.把Form1窗体的Text属性值设置为“可擦写图形轮廓”,把它的Name属性值设置为“frmDraw”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmDraw.vb”。然后执行【项目】→【Task10_1属性】命令,在出现的“Task10_1属性页”对话框中把“启动对象”设置为“frmDraw”。3.引入命名空间System.Drawing.Drawing2D,语句如下。ImportsSystem.Drawing.Drawing2D
10.2任务:可擦写图形轮廓——图形编程与鼠标事件4.定义模块级变量,语句如下。DimStartPt,EndPtAsPoint"存放起始点的坐标DimgAsGraphics"存放Graphics对象DimMyPenAsPen"存放画笔对象DimMyBrushAsSolidBrush"存放画刷对象DimDrawShouldAsBoolean=False"是否画轮廓5.编写窗体的Load事件过程代码,如下。PrivateSubfrmDraw_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Loadg=Me.CreateGraphics()"建立Graphics对象MyPen=NewPen(Color.Black,1)"建立画笔对象MyBrush=NewSolidBrush(Color.Blue)"建立画刷对象EndSub
10.2任务:可擦写图形轮廓——图形编程与鼠标事件6.编写窗体的MouseDown事件过程代码,如下。PrivateSubfrmDraw_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesMyBase.MouseDownMe.Capture=True"捕获鼠标DrawShould=True"启动绘图StartPt.X=e.X:StartPt.Y=e.YEndPt=StartPt"终止点EndSub说明:MouseDown事件在鼠标按下时发生。在该事件中开始对鼠标进行捕获并启动画图,设置绘制椭圆的开始点坐标和结束点坐标
10.2任务:可擦写图形轮廓——图形编程与鼠标事件7.编写窗体的MouseMove事件过程代码,如下。PrivateSubfrmDraw_MouseMove(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesMyBase.MouseMoveIf(DrawShould=True)Then"如果启动了绘图MyPen.Color=Me.BackColor"设置画笔的颜色为背景色"清除前面绘制的图形g.DrawEllipse(MyPen,StartPt.X,StartPt.Y,_EndPt.X-StartPt.X,EndPt.Y-StartPt.Y)MyPen.Color=Color.Black"设置画笔的颜色为黑色MyPen.DashStyle=DashStyle.Dash"设置虚线样式
10.2任务:可擦写图形轮廓——图形编程与鼠标事件"绘制轮廓g.DrawEllipse(MyPen,StartPt.X,StartPt.Y,e.X-StartPt.X,e.Y-StartPt.Y)EndPt.X=e.X"把当前点设置为终点EndPt.Y=e.YEndIfEndSub说明:MouseMove事件在鼠标移动时发生。当在窗体上移动鼠标时,先以背景色重画一个上一次绘制的椭圆,就好象清除了前面的椭圆,然后再在新位置绘制一个椭圆,就形成了可擦写的轮廓
10.2任务:可擦写图形轮廓——图形编程与鼠标事件8.编写窗体的MouseUp事件过程代码,如下。PrivateSubfrmDraw_MouseUp(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesMyBase.MouseUpDrawShould=False"停止画图MyPen.Color=Me.BackColor"设置图笔颜色为背景色"清除先前的轮廓g.DrawEllipse(MyPen,StartPt.X,StartPt.Y,EndPt.X-StartPt.X,EndPt.Y-StartPt.Y)
10.2任务:可擦写图形轮廓——图形编程与鼠标事件"绘制以蓝色填充的椭圆g.FillEllipse(MyBrush,StartPt.X,StartPt.Y,e.X-StartPt.X,e.Y-StartPt.Y)Me.Capture=False"结束鼠标捕获EndSub说明:MouseUp事件是在放开鼠标键时发生。当在窗体上放开鼠标键时,先以背景色重画一个上一次绘制的椭圆,以清除前面的椭圆,再绘制当前的椭圆即可
10.2任务:可擦写图形轮廓——图形编程与鼠标事件9.运行程序,在窗体上单击鼠标左键并拖动,会出现可擦写的轮廓,放开鼠标键,显示出绘制的图形。保存项目,本任务至此全部完成。归纳说明:本任务通过可擦写图形轮廓的实现过程,讲解了常用的绘图对象(如Graphics对象、Pen对象、Brush对象)的创建与使用方法,还演示了调用Graphics对象的DrawEllipse方法绘制椭圆的方法。另外本任务的实现过程中,还用到了与鼠标操作有关的事件,如MouseDown事件、MouseMove事件和MouseUp事件
10.2任务:可擦写图形轮廓——图形编程与鼠标事件拓展与提高:对鼠标操作的处理是应用程序的重要功能之一,在VB.NET中有一些与鼠标操作相关的事件,利用它们可以方便地进行与鼠标有关的编程。(1)MouseEnter事件该事件在鼠标指针进入控件时发生。(2)MouseMove事件该事件在鼠标指针移到控件上时发生。事件处理程序接收一个MouseEventArgs类型的参数,该参数包含与此事件相关的数据。该参数的主要属性及其含义如下
10.2任务:可擦写图形轮廓——图形编程与鼠标事件①Button属性:用来获取曾按下的是哪个鼠标按钮。该属性是MouseButtons枚举型的值,取值及含义如下:Left(按下鼠标左按钮)、Middle(按下鼠标中按钮)、Right(按下鼠标右按钮)、None(没有按下鼠标按钮)、XButton1(按下了第一个XButton按钮,仅用于Microsoft智能鼠标浏览器)和XButton2(按下了第二个XButton按钮,仅用于Microsoft智能鼠标浏览器)Clicks属性:用来获取按下并释放鼠标按钮的次数。②Delta属性:用来获取鼠标轮已转动的制动器数的有符号计数。制动器是鼠标轮的一个凹口。③X属性:用来获取鼠标所在位置的x坐标。④Y属性:用来获取鼠标所在位置的y坐标
10.2任务:可擦写图形轮廓——图形编程与鼠标事件(3)MouseHover事件当鼠标指针悬停在控件上时将发生该事件。(4)MouseDown事件当鼠标指针位于控件上并按下鼠标键时将发生该事件。事件处理程序也接收一个MouseEventArgs类型的参数。(5)MouseWheel事件在移动鼠标轮并且控件有焦点时将发生该事件。该事件的事件处理程序接收一个MouseEventArgs类型的参数(6)MouseUp事件当鼠标指针在控件上并释放鼠标键时将发生该事件。事件处理程序也接收一个MouseEventArgs类型的参数
10.2任务:可擦写图形轮廓——图形编程与鼠标事件(7)MouseLeave事件在鼠标指针离开控件时将发生该事件。例如,在本任务执行时,无论是按下鼠标左键还是按下鼠标右键,都会出现可擦写的轮廓,放开鼠标键后都会绘制出椭圆来。能不能只在鼠标左键按下去才出现可擦写的轮廓呢?其实实现比较简单,只需在相应的鼠标事件中测试按下的是哪个键,如果是左键就绘制可擦写轮廓即可。修改的代码如下
10.2任务:可擦写图形轮廓——图形编程与鼠标事件思考与实训:1.使用GDI+绘制出一个椭圆需要经过哪几步?2.本任务中可擦写轮廓是怎样实现的?能否实现可擦写的矩形轮廓?如果能请编程实现。3.常用的鼠标事件有哪些?如何在MouseDown事件中判断按下的是鼠标左键还是右键?4.编一个应用程序用来绘制多个周期的衰减余弦典线,衰减正弦曲线的公式如下:程序的运行界面如图10-5所示
10.2任务:可擦写图形轮廓——图形编程与鼠标事件提示:函数值是一个连续的曲线,画连续曲线可采用以下的方法:将连续的曲线图形看作是由许多条线段连接而成,求出曲线上一系列的点的坐标(x,y),然后用画线方法DrawLine将这些点首尾连接起来。解决这类画图题,首先应确定坐标原点位置,如本题坐标原点定位在(10,窗体高度/2);然后根据所画的最大值确定画图的坐标单位,本题函数值的大小为-1~+1,可用“窗体高度/3”个像素表示1;x轴可用“窗体宽度/50”来做一个坐标单位,表示π/10。画图的时候,可通过循环每隔π/10弧度求一个函数的值,并转换成相应的坐标值,然后用DrawLine方法把计算出来的点依次相连起来。DrawLine方法的调用格式请读者参阅附录2。5.编写在窗体上画出奥运五环标记
10.2任务:可擦写图形轮廓——图形编程与鼠标事件PrivateSubfrmDraw_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesMyBase.MouseDownIfe.Button=MouseButtons.LeftThen"……省去的代码与任务中的同名事件过程代码完成一致EndIfEndSubPrivateSubfrmDraw_MouseUp(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesMyBase.MouseUpIfe.Button=MouseButtons.LeftThen"……省去的代码与任务中的同名事件过程代码完成一致EndIfEndSub
10.3多媒体的基本概念多媒体的含义多媒体技术特点常用的多媒体文件
10.3.1多媒体的含义媒体是指信息的载体,有存储媒体和表现媒体之分。通常所讲的多媒体中的媒体主要是指表现信息的媒体,表现信息的媒体主要有文字、图形、图像、影片、动画、声音和音乐等。所谓多媒体是指为了实现某种功能而有机结合在一起的多种表现媒体,并通过计算机展示。“多媒体技术”在某种程度上已经成为声、文、图、动画、影像等媒体信息在计算机系统中综合应用的代名词
10.3.1多媒体的含义多媒体技术是利用计算机技术将各种媒体(文字、图形、动画、图像、视频等)以数字化的方式集成在一起,从而使计算机具有了表现、处理、存储多种信息的综合能力。多媒体技术的出现,使计算机具有了与人进行声、图、文等方面的交流,从很多方面影响了人们的学习、娱乐和生活
10.3.2多媒体技术特点多媒体技术具有下面的两个重要特点:(1)多种媒体的综合单一的文本、声音或图形图像不能称为多媒体,只有把多种媒体有机地综合在一起才能称为多媒体。(2)交互性多媒体的一个重要特点就是交互性,这也是它与广播电视及其它电教设备的本质不同之处。多媒体程序在运行过程中,能根据用户的反应做出不同的响应。如考试多媒体软件,用户做了某道题后,如果正确计算机给出一种应答,如果错误计算机也立即给出另一种应答
10.3.3常用的多媒体文件计算机处理的媒体信息都是以文件的形式出现的。各类主要媒体文件及扩展名如下:图像文件:位图文件(.BMP)、JPEG文件(.JPG)、GIF文件(.GIF)、PNG文件(.PGN);声音文件:声波文件(.WAV)、MIDI音乐文件(.MID)、MP3文件(.MP3);视频文件:AVI文件(.AVI)、MPEG文件(.MPG);动画文件:Flash动画文件(.SWF)。在VB.NET中,可以使用MediaPlayer控件、MMControl控件和ShockWaveFlash控件对多媒体文件进行控制
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制任务10-2描述:编写一个视频文件播放器程序。程序的设计界面如图10-6所示,程序的运行界面如图10-7所示。程序执行时按“选择文件”按钮,将出现一个打开对话框,让用户选择一个要播放的文件,单击“播放”、“暂停”、“后退”、“前进”按钮将实现相应的视频控件功能,播放视频的窗口为一个图片框。
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制程序执行过程中在窗口顶部的进度条中显示出视频文件的播放进度,在右上角的文本框中显示当前播放到的帧位置,如图10-7所示图10-6程序设计界面图10-7程序运行界面
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制任务分析:在VB.NET中,可使用axMMControl控件播放视频文件。为使axMMControl控件能够播放视频文件,可在视频文件打开时,根据视频文件的扩展名设置它的DeviceType属性。由于AVI文件要在一个图片框中播放,可以通过给axMMControl控件的HWndDisplay属性值来实现该功能。可给程序添加一个openFileDialog对话框,在运行时用来选择要播放的文件,文件选择过后应打开它,以便播放。本题不使用axMMControl控件上的按钮来控制视频文件,而是通过给axMMControl控件的Command属性赋值来在执行相应的控制命令。要设置每次前进或后退的帧数,应设置axMMControl控件的Frames属性
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制可使用ProgressBar控件来显示视频文件的播放进度,在打开文件的时候设置ProgressBar控件的Minimum属性值为0,并用axMMControl控件的Length属性值作为ProgressBar控件的Maximum属性,从而使视频文件的位置与进度条的值对应起来。为了使ProgressBar控件能够反映出多媒体文件的播放进度,只需不断地用axMMControl控件的Position属性值更新ProgressBar控件的Value属性值即可。为实现该功能,可使用axMMControl控件的StatusUpdate事件,该事件的发生时间间隔由UpdateInterval属性值(本题设为100)决定
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制任务实现:1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH10”,项目名为“Task10_2”。2.把Form1窗体的Text属性值设置为“教师信息录入”,把它的Name属性值设置为“frmVideoPlayer”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmVideoPlayer.vb”。然后执行【项目】→【Task10_2属性】命令,在出现的“Task10_2属性页”对话框中把“启动对象”设置为“frmVideoPlayer”
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制3.执行【工具】→【添加/删除工具箱项】命令,打开如图10-8所示的【自定义工具箱】对话框。单击“COM”页标签,在其中的列表框中选中“MicrosoftMultimediaControl,Version6.0”控件,然后单击“确定”按钮。此时,可以看到axMMControl控件已经添加到工具箱中,图标为“”。然后就可以把axMMControl控件添加到窗体中,在窗体中的axMMControl控件的形状如图10-9所示图10-8“自定义工具箱”对话框图10-9axMMControl控件的形状
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制说明:axMMControl控件不是VB.NET的标准控件,要使用它必须把它添加进来。该控件上有九个按钮,分别代表九种功能,按钮的图标与录音机上的按钮非常相似,从左到右,这些按钮分别是:Prev(前一首或向前)、Next(下一首或向后)、Play(播放)、Pause(暂停)、Back(快速倒带)、Step(快速进带)、Stop(停止)、Record(录制)和Eject(弹出)
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制4.再在工具栏中找到ProgressBar控件(进度条控件),该控件的图标为“”,把该控件加载到窗体上。说明:(1)ProgressBar控件的作用。ProgressBar控件在水平栏中显示适当长度的矩形来指示操作的进度。当执行某种操作时,进度条用系统突出显示颜色在水平栏中从左向右进行填充。操作完成时,进度栏被填满。当某操作运行时间较长时,如果没有视觉提示,用户可能会认为应用程序不响应,通过在应用程序中使用进度条,就可以告诉用户应用程序正在执行冗长的任务且应用程序仍在响应
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(2)ProgressBar控件的常用属性①Maximum属性:该属性用来设置或返回进度条能够显示的最大值,默认值为100。②Minimum属性:该属性用来设置或返回进度条能够显示的最小值,默认值为0。③Value属性:该属性用来设置或返回进度条的当前位置。④Step属性:该属性用来设置或返回一个值,该值用来决定每次调用PerformStep方法时,Value属性增加的幅度。例如,如果要复制一组文件,则可将Step属性的值设置为1,并将Maximum属性的值设置为要复制的文件总数。在复制每个文件时,可以调用PerformStep方法按Step属性的值增加进度栏
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(3)ProgressBar控件的常用方法①Increment方法该方法用来按指定的数量增加进度条控件的Value属性值,调用的一般格式如下:ProgressBar对象.Increment(n)其功能是把“ProgressBar对象”指定的进度条对象的Value属性值增加n,n为整数。调用该方法之后,若Value属性大于Maximum属性的值,则Value属性值就是Maximum值,若Value属性小于Minimum属性值,则Value属性值就是Minimum值。②PerformStep方法该方法用来按step属性值来增加进度条的Value属性值,调用的一般格式如下:ProgressBar对象.PerformStep()该方法无参数。例如,下列程序段是一个显示复制多个文件的进度的进度条使用方法,请读者体会它的含义
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制5.对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表10-4所示
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制6.编写窗体的Load事件过程代码,如下。PrivateSubfrmVideoPlayer_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadOpenFileDialog1.Filter="AVI文件|*.avi|Mpeg文件|*.mpg"OpenFileDialog1.FilterIndex=1"默认播放AVI视频文件OpenFileDialog1.Title="选择媒体文件""设置对话框标题属性"设置打开文件对话框的初始目录OpenFileDialog1.InitialDirectory=Application.StartupPathAxMMControl1.hWndDisplay=PictureBox1.Handle.ToInt32"设置播放窗口
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制Button2.Enabled=False"“播放”按钮不能用Button3.Enabled=False"“暂停”按钮不能用Button4.Enabled=False"“前进”按钮不能用Button5.Enabled=False"“后退”按钮不能用TextBox1.Text="":TextBox2.Text=""EndSub说明:上述代码中使用了AxMMControl控件的hWndDisplay属性来指定视频文件的播放窗口为PictureBox1。AxMMControl控件的属性有很多,掌握这些属性将有助于灵活地进行多媒体程序设计
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制下面介绍一下AxMMControl控件的常用属性。(1)AutoEnable属性:用来决定系统是否自动检测MMControl控件的各按钮的状态。当按钮的状态为有效时,它会以黑色显示,当按钮的状态为无效时,则以灰色显示。该属性取值有两种情况:True和False,True代表自动检测,False代表不自动检测。默认值为True。(2)各按钮的Enable属性:用来决定各按钮是否处于有效状态,取值有两种情况:True和False,True代表按钮处于有效状态,False代表按钮处于无效状态。例如,下列程序段的功能是把axMMControl1的Play按钮和Pause按钮置于有效状态。axMMControl1.AutoEnable=False:axMMControl1.PlayEnable=True:axMMControl1.PauseEnable=True(3)各按钮的Visible属性:用来决定各按钮是否可视(能否被看到),取值有两种情况:True和False。True代表按钮可视,False代表按钮不可视,缺省值为可视。例如,下列程序段的功能是把axMMControl1的Play按钮和Pause按钮置于不可视状态。axMMControl1.PlayVisible=False:axMMControl1.PauseVisible=False
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(4)Command属性:该属性用来控制对多媒体文件或设备的操作,如播放、暂停、快进、停止、保存等。该属性的取值有14种,如表10-5所示表10-5axMMControl控件的Command属性取值
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(5)DeviceType属性:该属性用于设置多媒体设备的类型。包括以下类型:AVI动画(AVIVideo)、CD音乐设备(CDAudio)、VCD文件(DAT)、数字视频文件(DigitalVideo)、WAV声音播放设备(WaveAudio)、MIDI设备(Sequencer)和其他类型。(6)TimeFormat属性:该属性用来指定位置信息所使用的时间格式。From、To、Length和Position等属性的时间有多种格式,由它指定使用哪一种格式。它的设置值为0到10。常用的有两种:值为0时,以毫秒为单位;值为2时,以时:分:秒为单位。(7)From属性:该属性用来指定开始播放文件或录制文件的起始时间。(8)To属性:该属性与From属性对应,指定播放文件或录制文件的结束时间。(9)Position属性:调用它可以返回已打开的多媒体文件的位置,时间单位由TimeFormat属性确定的时间格式确定
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(10)Length属性:通过该属性可以返回当前打开的多媒体文件的长度,时间单位由TimeFormat属性确定的时间格式确定。(11)Frames属性:该属性用来指定当执行“Back”后退命令或“Step”前进命令时,前进或后退的帧数。若Frames属性设为10,则每次按Step按钮,前进10帧,按Back按钮时后退10帧。(12)Notify属性:该属性用来决定MMControl控件的下一条命令执行完后,是否产生Done事件。若Notify属性设为True,则产生,否则不产生。(13)Wait属性:该属性决定MMControl控件是否等待下一条命令执行完后,才交出控制权。若Wait属性设为True,则等待,否则不等待
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(14)Mode属性:该属性只读,它返回一个已打开的多媒体设备的状态。它的取值和对应的意义如表10-6所示表10-6Mode属性及其含义
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(15)NotifyValue属性:该属性的取值及其意义如表10-7所示表10-7NotifyValue属性
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制(16)Orientation属性:该属性设置各按钮的排列方向,缺省值为1,表示水平排列,当它的值为0时,按钮将垂直排列。(17)UpdateInterval属性:该属性用来设定StatusUpdate事件发生的时间间隔。7.编写Button1按钮的Click事件过程代码,如下。PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimFnameAsStringIf(OpenFileDialog1.ShowDialog()=DialogResult.OK)Then"弹出打开对话框并选择文件Fname=OpenFileDialog1.FileNameIf(Fname="")Then"如果选择了文件
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制MessageBox.Show("请选择文件名!","提示框")"显示消息框ExitSubEndIfSelectCaseOpenFileDialog1.FilterIndex"判断选择了何种文件Case1AxMMControl1.DeviceType="AVIVideo""选择了AVI文件Case2AxMMControl1.DeviceType="MPEGVideo""选择了mpg文件EndSelectMsgBox(Fname)AxMMControl1.Command="Close""关闭多媒体设备"把打开的文件名赋值给axMMControl1控件的FileName属性以便播放AxMMControl1.FileName=FnameAxMMControl1.Command="Open""打开多媒体文件
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制Button2.Enabled=True"“播放”按钮可用Button3.Enabled=True"“暂停”按钮可用Button4.Enabled=True"“前进”按钮可用Button5.Enabled=True"“后退”按钮可用ProgressBar1.Minimum=0"设置进度条的最小值ProgressBar1.Maximum=AxMMControl1.Length"设置进度条的最大值TextBox1.Text=CStr(AxMMControl1.Length)"显示总帧数EndIfEndSub说明:上述代码首先弹出一个打开文件对话框供用户选择一个视频文件,然后根据用户选择的视频文件的扩展名来判断应使用的设备类型,并把相应的设备类型赋值给AxMMControl1控件的DeviceType属性。关闭AxMMControl1控件,并把选择的文件名赋值给AxMMControl1控件的FileName属性以便播放。最后把进度条的最小值设置为0,最大值设置为视频文件的帧数,并在文本框中显示出视频文件的总帧数
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制8.编写Button2按钮的Click事件过程代码,如下。PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickAxMMControl1.Command="Play""执行"播放"命令EndSub9.编写Button3按钮的Click事件过程代码,如下。PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickAxMMControl1.Command="Pause""执行"暂停"命令EndSub
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制10.编写Button4按钮的Click事件过程代码,如下。PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.ClickAxMMControl1.Command="Back""执行"后退"命令EndSub11.编写Button5按钮的Click事件过程代码,如下。PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.ClickAxMMControl1.Command="Step""执行"前进"命令EndSub
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制12.编写AxMMControl1控件的StatusUpdate事件过程代码,如下。PrivateSubAxMMControl1_StatusUpdate(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesAxMMControl1.StatusUpdateProgressBar1.Value=AxMMControl1.Position"用多媒体文件的当前位置更新进度条值TextBox2.Text=AxMMControl1.Position.ToString()"显示多媒体文件的当前位置EndSub说明:该事件每隔一定的时间重复发生,发生的时间隔由UpdateInterval属性指定。在该事件中,把AxMMControl1控件的Position属性值在进度条上显示,将会使进度条不停地变动。13.编写“退出”按钮的事件过程代码。然后运行程序,对程序的功能进行验证。验证无误后保存项目,至此本任务全部完成
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制归纳说明:本任务通过视频文件播放器的实现过程,讲解了利用AxMMControl控件进行多媒体程序设计的一般方法。在讲解过程中详细讲解了AxMMControl控件常用属性的含义及常用方法的使用,还介绍了它的一个事件StatusUpdate的使用方法。读者需特别注意的是AxMMControl控件不是VB.NET的标准控件,要使用它必须先把它加载到项目中来
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制拓展与提高:使用AxMMControl控件能够方便地编写多媒体应用程序,一般情况下,使用该控件应遵循如下步骤。(1)在窗体上创建AxMMControl控件以及其他相关控件。(2)把AxMMControl控件的DeviceType属性值设置为所用的多媒体设备的类别。(3)如果使用多媒体文件,应把多媒体文件名赋值给AxMMControl控件的FileName属性。(4)把AxMMControl控件的Command属性值设置为“Open”以打开多媒体设备。(5)把AxMMControl控件的Command属性值设置为表10-5中的其他值以控制多媒体设备。(6)在使用完后,可把“Close”赋给AxMMControl控件Command属性以关闭多媒体设备
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制思考与实训:1.AxMMControl控件的DeviceType、FileName、Position、Command、UpdateInterval等属性各有什么含义?如何取值?2.用AxMMControl控件播放视频文件时,如何指定视频文件的播放窗口?3.本任务中进度条控件显示视频文件的播放速度是怎样实现的?
10.4任务2视频文件播放器——axMMControl控件、ProgressBar控件与视频文件控制4.编写一个媒体播放器程序,要求能够播放常见的媒体文件,程序的设计界面如图10-10所示。程序运行时,单击“选择媒体文件”按钮将弹出一个“打开文件”对话框,在该对话框中可以选择AVI、WAV、MID、DAT、MPG、MP3等常见格式的媒体文件。选择文件后按“播放”按钮将播放媒体文件。按“退出”按钮将退出应用程序图10-10简易媒体播放器设计界面
10.5任务3:音频播放器——音频控制与媒体的循环播放任务10-3描述:编写一个音频播放器,该音频播放器能够播放波音音频文件(WAV文件)和音乐文件(MID文件),并且音乐文件作为背景音乐并循环播放。程序的设计界面如图10-11所示,程序的运行界面如图10-12所示图10-11程序设计界面图10-12程序运行界面
10.5任务3:音频播放器——音频控制与媒体的循环播放程序运行时播放默认的背景音乐。单击“选择声音”按钮将出现一个打开文件对话框,供用户选择一个WAV文件并播放,单击“重放”按钮将重新播放WAV文件。单击“选择背景音乐”按钮将重新选择一个MID文件作为背景音乐播放。上、下两个进度条分别用来显示WAV文件和MID文件夹播放进度。单击“退出”按钮将退出应用程序
10.5任务3:音频播放器——音频控制与媒体的循环播放任务分析:本任务的实现有两个要点:一是WAV文件和MID文件的同时播放。由于WAV和MID文件使用的是不同的多媒体设备,因此它们能够同时播放。但一般情况下不能同时播放两个WAV文件或两个MID文件。二是背景音乐的循环播放。为实现背景音乐的循环播放,可先设置AxMMControl控件的Notify属性值为True,这样每当一次MCI操作完成后均会发生Done事件,可在该事件中判断是否已经播放结束,如果播放结束回到文件头即
10.5任务3:音频播放器——音频控制与媒体的循环播放任务实现:1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH10”,项目名为“Task10_3”。2.把Form1窗体的Text属性值设置为“音频播放器”,把它的Name属性值设置为“frmAudioPlayer”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmAudioPlayer.vb”。然后执行【项目】→【Task10_3属性】命令,在出现的“Task10_3属性页”对话框中把“启动对象”设置为“frmAudioPlayer”
10.5任务3:音频播放器——音频控制与媒体的循环播放3.对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表10-8所示。任务10-3控件属性设置及其功能
10.5任务3:音频播放器——音频控制与媒体的循环播放4.编写窗体的Load事件过程代码,如下。PrivateSubfrmAudioPlayer_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadAxMMControl2.Notify=TrueAxMMControl2.Command="Close""关闭播放背景音乐的多媒体设备AxMMControl2.FileName=Application.StartupPath+"1.mid""设置背景音乐文件名AxMMControl2.Command="Open""打开多媒体设备AxMMControl2.TimeFormat=3ProgressBar2.Minimum=0"设置进度条的最小值ProgressBar2.Maximum=AxMMControl2.Length"设置进度条的最大值AxMMControl2.Command="Play""播放背景音乐
10.5任务3:音频播放器——音频控制与媒体的循环播放OpenFileDialog1.Filter="声波文件(*.WAV)|*.WAV""只能选出WAV文件OpenFileDialog2.Filter="音乐文件(*.MID)|*.mid""只能选出MID文件OpenFileDialog1.InitialDirectory=Application.StartupPath"初始目录为应用程序启动目录OpenFileDialog2.InitialDirectory=Application.StartupPath"初始目录为应用程序启动目录EndSub说明:代码中首先把AxMMControl2控件的Notify属性值设置为True,从而可以发生Done事件,在该事件发生时重新播放音乐,实现音乐的循环播放。在播放文件前,应设置进度条的最大值与最小值。最后对两个OpenDialog控件进行属性设置,使之分别播放声音文件和音乐文件
播放10.5任务3:音频播放器——音频控制与媒体的循环5.编写Button1按钮的Click事件过程代码,如下。PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickOpenFileDialog1.ShowDialog()If(OpenFileDialog1.FileName<>"")ThenAxMMControl1.Command="Close""关闭播放朗诵声音的多媒体设备AxMMControl1.Notify=True"AxMMControl1.FileName=OpenFileDialog1.FileName"AxMMControl1.Command="Open""打开多媒体设备AxMMControl1.TimeFormat=4
10.5任务3:音频播放器——音频控制与媒体的循环播放ProgressBar1.Minimum=0"设置进度条的最小值ProgressBar1.Maximum=AxMMControl1.Length"设置进度条的最大值AxMMControl1.Command="Play""播放Button2.Enabled=True"“重放”按钮可用EndIfEndSub说明:上述代码通过一个打开文件对话框供用户选择一个WAV文件并播放,并且设置进度条的最大值与最小值。
10.5任务3:音频播放器——音频控制与媒体的循环播放6.编写事件AxMMControl1控件的StatusUpdate事件过程代码,如下。PrivateSubAxMMControl1_StatusUpdate(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesAxMMControl1.StatusUpdateProgressBar1.Value=AxMMControl1.Position"用声音文件的当前位置更新进度条值EndSub说明:该事件过程的作用是更新进度条ProgressBar1,显示声音文件的播放进度
10.5任务3:音频播放器——音频控制与媒体的循环播放7.编写事件AxMMControl2控件的StatusUpdate事件过程代码,如下。PrivateSubAxMMControl2_StatusUpdate(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesAxMMControl2.StatusUpdatProgressBar2.Value=AxMMControl2.Position"用多媒体文件的当前位置更新进度条值EndSub说明:(1)该事件过程的作用是更新进度条ProgressBar2,显示背景音乐的播放进度
10.5任务3:音频播放器——音频控制与媒体的循环播放(2)下面介绍一个AxMMControl的主要事件。①StatusUpdate事件:该事件按UpdateInterval属性指定的时间间隔发生,通常利用它更新ProgressBar控件,表示多媒体文件播放的进度。②Click事件:AxMMControl的每一个按钮均有一个对应的Click事件,该事件在按钮上单击时触发。Click事件有一个参数Cancel,如果Cancel参数设为False,则先执行系统赋给该按钮的功能,再执行用户在Click事件过程中编写的代码;如果Cancel参数设为True,则不执行系统赋给该按钮的功能,而只执行用户编写的代码。③Done事件:当Notify属性值设置为True时,每一个MCI控制命令执行完毕时均会触发该事件。一条MCI控制命令发出后(如发出Play命令),可能需要花费几分钟的执行时间。若用户想知道命令何时执行完以便进行下一步处理,就可使用Done事件,一个MCI控制命令执行完后,就会触发Done事件,在Done事件方法中可设计命令结束处理程序
10.5任务3:音频播放器——音频控制与媒体的循环播放8.编写事件AxMMControl2控件的Done过程代码,如下。PrivateSubAxMMControl2_Done(ByValsenderAsObject,ByValeAsAxMCI.DmciEvents_DoneEvent)HandlesAxMMControl2.DoneIf(AxMMControl2.Position=AxMMControl2.Length)Then"如果播放到文件尾,则重新播放AxMMControl2.Command="Prev""回到文件头AxMMControl2.Command="Play""重新播放EndIfEndSub说明:该事件过程的作用是当音乐文件播放完后,使之从头开始重新播放,从而实现了背景音乐的循环播放
10.5任务3:音频播放器——音频控制与媒体的循环播放9.编写Button2按钮的Click事件过程代码,如下。PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickAxMMControl1.Command="Prev""回到文件头AxMMControl1.Command="Play""重新播放ProgressBar1.Value=AxMMControl1.Position"用多媒体文件的当前位置更新进度条值EndSub说明:该事件的作用是使声音文件从头开始播放
10.5任务3:音频播放器——音频控制与媒体的循环播放10.编写Button3按钮的Click事件过程代码,如下。PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickOpenFileDialog2.ShowDialog()If(OpenFileDialog2.FileName<>"")ThenAxMMControl2.Command="Close""关闭播放背景音乐的多媒体设备AxMMControl2.Notify=True"AxMMControl2.FileName=OpenFileDialog2.FileNameAxMMControl2.Command="Open""打开播放背景音乐的多媒体设备AxMMControl2.TimeFormat=3"设置时间格式ProgressBar2.Minimum=0"设置进度条的最小值
10.5任务3:音频播放器——音频控制与媒体的循环播放ProgressBar2.Maximum=AxMMControl2.Length"设置进度条的最大值AxMMControl2.Command="Play""播放EndIfEndSub说明:该事件的作用是通过打开文件对话框选择一个MID文件作为背景音乐,设置进度条的最小值和最大值并播放。11.编写“退出”按钮的事件过程代码。然后运行程序,对程序的功能进行验证。验证无误后保存项目,至此本任务全部完成
10.5任务3:音频播放器——音频控制与媒体的循环播放归纳说明:本任务通过音频播放器的实现过程,讲解了声音文件(WAV文件)、音乐文件(MID文件)等不同类媒体同时播放的方法,讲解了背景音乐的循环播放方法。其中涉及到了AxMMControl控件的一些属性设置(如Notify属性的取值及含义)以及一些事件的编程(如Done事件),读者应熟练掌握
10.5任务3:音频播放器——音频控制与媒体的循环播放拓展与提高:除了可以使用AxMMControl控件进行多媒体程序设计外,还可以使用Windows自带的MediaPlayer控件(媒体播放器控件)进行多媒体程序设计,实现类似于Windows的媒体播放器的功能。该控件也不是VB.NET的标准控件,在使用之前必须把该控件加载到工具箱中,加载方法同AxMMControl控件的加载,只是选中的COM组件名为“WindowsMediaPlayer”,该控件在工具箱中的图标为“”,该控件加载到窗体上的形状如图10-13所示图10-13WindowsMediaPlayer控件
10.5任务3:音频播放器——音频控制与媒体的循环播放下面介绍一个该控件的常用属性与方法1.MediaPlayer控件的常用属性(1)AutoRewind属性:该属性用来设置多媒体文件在播放完成时是否自动回到起始位置。默认值为False,表示不自动回到起始位置,若把它的值设置为True,则将自动回到起始位置。(2)Displaysize属性:该属性用来设置屏幕的大小。取值及含义如下:MpDefaultsize——正常大小、MpFullscreen——全屏、MpFitTosize——自定义大小。
10.5任务3:音频播放器——音频控制与媒体的循环播放(3)Dock属性:该属性用来指定控件在窗体中的位置模式。其中,Fill为指定其充满整个窗体。(4)Mute属性:该属性用来设置是否为静音状态。默认值为False,表示为不静音状态。(5)PlayCount属性:该属性用于设定控件的播放次数。(6)AutoStart属性:该属性用于设定控件是否自动播放。默认值为True,表示自动播放
10.5任务3:音频播放器——音频控制与媒体的循环播放(7)FileName属性:该属性用于设置要播放文件的文件名。(8)PlayState属性:该属性用于测试控件当前的播放状态。取值及含义为:Mppaused——暂停播放状态、Mpstopped——停止播放状态、Mpplaying——播放状态、Mpclosed——关闭状态。(9)DisplayMode属性:该属性用来确定是以帧的形式还是以时间的形式显示进度。取值为mpTime(以时间形式)和mpFrames(以帧形式)。(10)DisplaySize属性:该属性用来确定播放的视频文件所占位置的大小。取值有:mpDefaultSize、mpHalfSize、mpDoubleSize、mpFullScreen、mpFitToSize、mpOneSixteenthScreen、mpOneFourthScreen、mpOneHalfScreen
10.5任务3:音频播放器——音频控制与媒体的循环播放2.MediaPlayer控件的常用方法(1)Play方法:该方法用来播放多媒体文件。(2)Pause方法:该方法用来暂停多媒体文件的播放。(3)Stop方法:该方法用来停止对多媒体文件的播放。在应用程序中,该控件一般直接使用而无需编程,此处不再详细介绍它的使用方法。通常情况下,只需给该控件的FileName属性值赋一个多媒体文件名,即可使用它对多媒体文件进行控制。例如在窗体上放置一个OpenFileDialog控件,然后编写窗体的Load事件代码,如下。PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadOpenFileDialog1.Filter="AVI|*.avi|MPEG|*.mpg"OpenFileDialog1.ShowDialog()
10.5任务3:音频播放器——音频控制与媒体的循环播放If(OpenFileDialog1.FileName<>"")ThenAxMediaPlayer1.FileName=OpenFileDialog1.FileNameAxMediaPlayer1.Play()EndIfEndSub运行程序,选择一个视频文件,播放界面如图10-14所示图10-14正在播放视频文件的媒体播放器
10.5任务3:音频播放器——音频控制与媒体的循环播放思考与实训:1.利用AxMMControl控件能够同时播放两个WAV文件?如果能请说出方法,如果不能请说出原因。2.利用AxMMControl控件能够同时播放一个视频文件和一个WAV文件?如果能请说出方法,如果不能请说出原因。3.如何利用AxMMControl控件实现多媒体文件的循环播放?4.请为任务10-2加上背景音乐,要求背景音乐能够循环播放
10.5任务3:音频播放器——音频控制与媒体的循环播放5.编写一个选择唐诗并朗读的多媒体程序。程序运行时,将循环播放背景音乐,当鼠标移动到相应的唐诗标题上时,标题将出现背景色,如图10-15所示。此时若单击该唐诗标题将朗诵该唐诗。单击“退出”按钮将退出该程序的运行图10-15“唐诗朗诵”程序运行界面
10.5任务3:音频播放器——音频控制与媒体的循环播放6.在VB.NET中,可以使用ShockWaveFlash控件来设计Flash播放器,利用该控件可以打开.swf类型Flash文件,并能方便地实现对播放过程的控制。ShockWaveFlash控件也是一个ActiveX控件,在使用前需要把它加载到工具箱中,它在“自定义工具箱”中“COM”页的名称为“ShockwaveFlashObject”,加载到工具箱中的图标为“”。请在网上查找该控件的使用方法(包括常用属性和方法),然后编写一个简单的Flash动画播放器
计算机应用教研室2007.08ThankYou!VB.NET程序设计实用教程
第13周移多补少二年级奥数举一反三
第13周移多补少王牌例题1小明有16个贝壳,小红有12个贝壳。小明给小红几个贝壳,两人贝壳个数就会同样多?16-12=4(个)4÷2=2(个)
第13周移多补少举一反三1小红有10支铅笔,小明有6支铅笔。小红给小明几支铅笔,两人铅笔数量就会同样多?
第13周移多补少举一反三1二(1)班第一队有28人,第二队有36人,怎样调整两队人数就会同样多?
第13周移多补少举一反三1甲筐比乙筐多10棵白菜,从甲筐拿几棵到乙筐,甲乙两筐的白菜棵树就会同样多?
第13周移多补少王牌例题2文文和飞飞各有一些画片,飞飞给文文3张后,两人画片同样多,原来飞飞比文文多几张?3×2=6(张)飞飞文文移动数相差数
第13周移多补少举一反三2小华给小强2支铅笔,两人铅笔数量同样多,原来小华比小强多几支铅笔?
第13周移多补少举一反三2二(1)班有60名小朋友排两队做操,从第一队调4人到第二队,两队人数同样多,原来第一队比第二队多几人?
第13周移多补少举一反三2肖肖给飞飞6根小棒后,两人小棒数量一样多,原来肖肖比飞飞多几根小棒?
第13周移多补少王牌例题3哥哥有22张邮票,他给弟弟4张后,两人邮票张数同样多,弟弟原来有几张邮票?4×2=8(张)22-8=14(张)移动数相差数×2=
第13周移多补少举一反三3小红有10张画片,她给小明2张后,两人画片张数同样多,小明原来有几张画片?
第13周移多补少举一反三3小英做了15朵纸花,她给小兰3朵后,两人纸花的朵数同样多,小兰原来做了多少朵?
第13周移多补少举一反三3甲借3本书给乙后,两人书的本书一样多,这时乙有12本书,问甲原来有几本书?
第13周移多补少王牌例题4二(1)班有46人,二(2)班有42人,新学期又转来了8个同学,应该怎样分配,两班人数就可以相等?46-42=4(人)8-4=4(人)4÷2=2(人)4+2=6(人)
第13周移多补少举一反三4体育课上同学们排成两队,第一队26人,第二队20人,又来了8人,应该怎样分,才能使两队的人数相等?
第13周移多补少举一反三4李青家有一个书架,书架共分为3层,上层32本,中层26本,下层20本,若书的总本数不变,怎样使三层书架上的书本数相等?
第13周移多补少举一反三4小伟家的书架上有3层书,上层32本,中层28本,下层24本,怎样移动才能使上中下三层书架上的一样多?
第13周移多补少王牌例题5一个书架有两层。如果从上层取10本书到下层,上层比下层多5本。原来上层比下层多几本?
第13周移多补少举一反三5芳芳和南南有一些糖,芳芳给南南5块后,芳芳比南南还多2块。原来芳芳比南南多几块?
第13周移多补少举一反三5小林有一个两层的文具盒,上层比下层多4支笔,如果下层拿一支笔到上层,这时上层比下层多几支?
第13周移多补少举一反三5甲乙两堆萝卜,甲堆比乙堆多8个萝卜,如果从甲堆拿5个到乙堆,这时哪堆萝卜多?多几个?'
您可能关注的文档
- 最新Unit2HealthyeatingReading公开课教学课件课件PPT.ppt
- 最新unit2Colors新版开心英语公开课课件课件PPT.ppt
- 最新unit1外貌特征课件PPT.ppt
- 最新unit3.1 条码编制练习课件PPT.ppt
- 最新unit3-When和while引导的时间状语从句课件PPT.ppt
- 最新Unit5课件PPT课件.ppt
- 最新unit5一年英语上册课件PPT.ppt
- 最新Unit6时教学课件课件PPT.ppt
- 最新unit8-How-do-you-make-a-banana-milk-shake录课课件课件PPT.ppt
- 最新VA-ECMO治疗策略课件PPT.ppt
- 最新Visual Basic程序设计实训教程 教学课件 作者 陆剑锋 主编 俞伟新 颜忠胜 副主编 ch08 常用内部函数课件PPT.ppt
- 最新VFP6.0简明教程第7章-报表和标签课件PPT.ppt
- 最新VI设计教学课件PPT课件.ppt
- 最新Visual-FoxPro操作入门课件PPT.ppt
- 最新Washington-Irving--欧文课件PPT.ppt
- 最新W3.2.1欧姆定律课件PPT.ppt
- 最新where引导名词性从句课件PPT.ppt
- 最新where、when、-why定语从句课件PPT.ppt