已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB.NET程序设计实用教程,第10章 图形与多媒体程序设计,本章任务,可擦写图形轮廓 视频文件播放器 音频播放器,本章要点,GDI+与绘图命名空间,多媒体的含义,视频文件播放器,本章要点,可擦写图形轮廓,10.1 GDI+与绘图命名空间,在程序中有时需要绘制函数典型或绘制各种几何图形,这就要用到图形程序设计,在VB .NET中使用GDI+可以方便地进行图形程序设计。,10.1.1 GDI+的概念,GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品,它与.NET Framework同时推出。GDI+解决了原来GDI中的很多问题,使用户可以更容易地使用这些接口来绘制图形。,10.1.2 GDI+的绘图命名空间,用户绘图时需要使用GDI+函数,这些GDI+函数都保存在System.Drawing.dll动态链接库中。该动态链接库中包含了System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D和System.Drawing.Design等命名空间。在VB.NET的图形编程中,最常用的命名空间是System.Drawing。,10.1.3 利用GDI+绘制图形的方法步骤,在System.Drawing命名空间中,最核心的类是Graphics类。该类提供很多方法,利用它用户可以绘制出直线、曲线、椭圆等各种几何图形。在VB .NET中,图形一般是在窗体或图形框控件(PictureBox)上进行绘制。在绘图之前,应在指定的窗体或图形框控件上创建一个Graphics类的实例,创建了Graphics的实例后,才可以调用Graphics类的绘图方法。使用Graphics类需特别注意一点:Graphics类的构造器(Sub New)是私有的,不能直接实例化,即不能使用类似下面的语句来创建Graphics类的一个实例: Dim 对象名称 As New System.Drawing.Graphics() 要创建Graphics类的实例,一般需经过两步,一是定义一个Graphics类的对象,二是调用窗体或图片框控件的CreateGraphics方法,以下语句将在PictureBox1上创建一个名为pic的Graphics类的实例:,10.1.4 与绘图相关的对象,1 Graphics对象 Graphics对象就相当于一张画布,可以调用它的绘图方法在其上绘图。在绘制图形之前一定要先创建Graphics对象。创建Graphics对象的方法般有三种,分别如下。 (1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象 当响应窗体或控件的Paint事件时,传回的事件参数PaintEventArgs中包含着窗体或控件的Graphics对象,在其上可以进行绘图工作。利用该方式创建Graphics对象的例子如下: Private Sub Form1_Paint(ByVal sender As Object,ByVal e As System.Windows.Forms. PaintEventArgs) Handles MyBase.Paint Dim G As System.Drawing.Graphics = e.Graphics End Sub,10.1.4 与绘图相关的对象,(2)使用窗体或控件的CreateGraphics方法 窗体和控件类都有一个CreateGraphics方法,通过该方法可以在程序中生成此窗体或控件所对应的Graphics对象。这种方法一般应用于对象已经存在的情况下。如下所示: Dim G As System.Drawing.Graphics G = Me.CreateGraphics() 注意:Graphics是命名空间System.Drawing中的一个类,使用时应加上命名空间的名称。为了能够直接使用类名,可用Imports System.Drawing语句引入System.Drawing命名空间,引入后就可以直接使用类名Graphics,而不需再加命名空间前缀。 (3)使用Image的派生类创建Graphics对象。使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在VB .NET中对图像进行处理的场合。如下: Dim B As New Bitmap(“c:MYPIC.BMP“) 根据图像文件生成Bitmap对象 Dim G As Graphics 定义Graphics对象 G = Graphics.FromImage(B) 生成Graphics类的对象 Graphics类有许多绘图方法,关于Graphics类的绘图方法,请读者参阅附录2。,10.1.4 与绘图相关的对象,2Pen对象 Pen对象(又称画笔对象)主要用来绘制线条、多边形、曲线等几何图形,具有宽度、样式和颜色三种属性。Pen对象的宽度用来确定所画的线条宽度,默认的Pen对象宽度是一个像素单位;Pen对象的颜色确定了所画的线条颜色;Pen对象的样式确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线等。除此以外,在VB .NET中,还可以通过属性设置来设定Pen对象绘制的线条的起点和终点的样式。,10.1.4 与绘图相关的对象,(1)Pen对象的创建 Pen类的构造器有四种,使用方法如下。 创建某一颜色的Pen对象:Public Sub New(Color) 创建某一刷子样式的Pen对象:Public Sub New(Brush) 创建某刷子样式并具有相应宽度的Pen对象:Public Sub New(Brush, Single) 创建某一颜色和相应宽度的Pen对象:Public Sub New(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对象: Dim Pen1 As New Pen(Color.Yellow) : Dim Pen2 As New Pen(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 与绘图相关的对象,3Font对象 可以使用Font对象(字体对象)来建立自定义字体,该对象在建立之后就不能被修改,因此若程序中需要不同的字体,只有建立多个不同的Font对象。Font对象的构造器有很多重载版本,感兴趣的读者可参考相应的资料,此处不再赘述。Font对象的常用属性如表10-2所示,10.1.4 与绘图相关的对象,Font对象的常用属性,10.1.4 与绘图相关的对象,例如,有下列程序(已经引入命名空间System.Drawing): Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyFont As Font = New Font(“宋体“,20, FontStyle.Bold Or FontStyle.Italic) 创建字体 Dim g As Graphics : g = Me.CreateGraphics() 创建Graphics对象 g.DrawString(“字体演示与图形绘制。“, MyFont, New SolidBrush(Color.SlateBlue), 10, 10) MyFont.Dispose() : g.Dispose() 释放绘图对象 End Sub 程序的执行结果如图10-1所示,10.1.4 与绘图相关的对象,4Brush对象 Brush类(又称画刷)也不能被实例化,一般使用它的派生类。派生类主要有:SolidBrush(单色画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混合色渐变画刷)和TextureBrush(纹理画刷)。大部分的Brush类型都定义在System.Drawing命名空间中。HatchBrush、LinearGradientBrush和PathGradientBrush等画刷定义在System.Drawing.Drawing2D命名空间中,10.1.4 与绘图相关的对象,(1)SolidBrush画刷 SolidBrush类用来定义单一颜色的Brush,其构造器如下。 Public Sub New( ByVal color As Color ) 例如: Dim MyBrush As New SolidBrush(Color.Blue) 该语句创建了一个名为MyBrush的蓝色画刷。 (2)HatchBrush画刷 SolidBrush类用来定义阴影画刷,可以定义前景色和背景色及阴影风格。前景色定义线条的颜色,背景色定义各线条之间间隙的颜色,10.1.4 与绘图相关的对象,HatchBrush类的构造器有两种,分别如下: 格式1:Public Sub New( ByVal hatchstyle As HatchStyle, ByVal foreColor As Color ) 功能:以HatchStyle指定的图案或阴影方式和foreColor指定的前景色创建画刷,默认的背景色为黑色。 格式2:Public Sub New( ByVal hatchstyle As HatchStyle, ByVal foreColor As Color, ByVal backColor As Color ) 功能:创建画刷。参数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类的构造器有多种格式,最常用的格式如下。 格式:Public Sub New( ByVal point1 As Point, ByVal point2 As Point, ByVal color1 As Color, ByVal color2 As Color ) 功能:创建线性渐变画刷。该构造器有四个参数,其中Point1是表示渐变的起始点,Point2是表示渐变的终结点,Color1表示的渐变的起始色,Color2表示的是渐变的终止色。此处的Point1和Point2是Point结构型的变量,Point结构表示一个点,有两个成员x和y,分别表示点的横坐标和纵坐标,10.1.4 与绘图相关的对象,例如,有如下程序(已引入命名空间System.Drawing): Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyPic As Graphics = Me.CreateGraphics() 生成图形对象 Dim MyBrush As New LinearGradientBrush(New Point(0, 0), _ New Point(10, 10), Color.Blue, Color.Red) 生成渐变画刷 MyPic.FillRectangle(MyBrush, 5, 5, 150, 80) 填充矩形 MyBrush.Dispose() : MyPic.Dispose() 释放对象 End Sub 程序的执行结果如图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,语句如下。 Imports System.Drawing.Drawing2D,10.2 任务:可擦写图形轮廓图形编程与鼠标事件,4定义模块级变量,语句如下。 Dim StartPt, EndPt As Point 存放起始点的坐标 Dim g As Graphics 存放Graphics对象 Dim MyPen As Pen 存放画笔对象 Dim MyBrush As SolidBrush 存放画刷对象 Dim DrawShould As Boolean = False 是否画轮廓 5编写窗体的Load事件过程代码,如下。 Private Sub frmDraw_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load g = Me.CreateGraphics() 建立Graphics对象 MyPen = New Pen(Color.Black, 1) 建立画笔对象 MyBrush = New SolidBrush(Color.Blue) 建立画刷对象 End Sub,10.2 任务:可擦写图形轮廓图形编程与鼠标事件,6编写窗体的MouseDown事件过程代码,如下。 Private Sub frmDraw_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown Me.Capture = True 捕获鼠标 DrawShould = True 启动绘图 StartPt.X = e.X : StartPt.Y = e.Y EndPt = StartPt 终止点 End Sub 说明: MouseDown事件在鼠标按下时发生。在该事件中开始对鼠标进行捕获并启动画图,设置绘制椭圆的开始点坐标和结束点坐标,10.2 任务:可擦写图形轮廓图形编程与鼠标事件,7编写窗体的MouseMove事件过程代码,如下。 Private Sub frmDraw_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove If (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.Y End If End Sub 说明: MouseMove事件在鼠标移动时发生。当在窗体上移动鼠标时,先以背景色重画一个上一次绘制的椭圆,就好象清除了前面的椭圆,然后再在新位置绘制一个椭圆,就形成了可擦写的轮廓,10.2 任务:可擦写图形轮廓图形编程与鼠标事件,8编写窗体的MouseUp事件过程代码,如下。 Private Sub frmDraw_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp DrawShould = 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 结束鼠标捕获 End Sub 说明: 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 任务:可擦写图形轮廓图形编程与鼠标事件,Private Sub frmDraw_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown If e.Button = MouseButtons.Left Then 省去的代码与任务中的同名事件过程代码完成一致 End If End Sub Private Sub frmDraw_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp If e.Button = MouseButtons.Left Then 省去的代码与任务中的同名事件过程代码完成一致 End If End Sub,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中,可以使用Media Player控件、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”页标签,在其中的列表框中选中“Microsoft Multimedia Control ,Version 6.0”控件,然后单击“确定”按钮。此时,可以看到axMMControl控件已经添加到工具箱中,图标为“”。然后就可以把axMMControl控件添加到窗体中,在窗体中的axMMControl控件的形状如图10-9所示,图10-8 “自定义工具箱”对话框,图10-9 axMMControl控件的形状,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事件过程代码,如下。 Private Sub frmVideoPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load OpenFileDialog1.Filter = “AVI文件|*.avi|Mpeg文件|*.mpg“ OpenFileDialog1.FilterIndex = 1 默认播放AVI视频文件 OpenFileDialog1.Title = “选择媒体文件“ 设置对话框标题属性 设置打开文件对话框的初始目录 OpenFileDialog1.InitialDirectory = Application.StartupPath AxMMControl1.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 = “ End Sub 说明: 上述代码中使用了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-5 axMMControl控件的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-6 Mode属性及其含义,10.4 任务2 视频文件播放器axMMControl控件、ProgressBar控件与视频文件控制,(15)NotifyValue属性:该属性的取值及其意义如表10-7所示,表10-7 NotifyValue属性,10.4 任务2 视频文件播放器axMMControl控件、ProgressBar控件与视频文件控制,(16)Orientation属性:该属性设置各按钮的排列方向,缺省值为1,表示水平排列,当它的值为0时,按钮将垂直排列。 (17)UpdateInterval属性:该属性用来设定StatusUpdate事件发生的时间间隔。 7编写Butt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南临沧市临翔区人民政府凤翔街道办事处招聘城镇公益性岗位10人考试笔试模拟试题及答案解析
- 成都市第三十二幼儿园招聘笔试考试备考试题及答案解析
- 2025中国建研院所属建筑科学研究院人才招聘8人笔试考试参考试题及答案解析
- 2026广东广州市中山大学孙逸仙纪念医院人才招聘(第一批)笔试考试备考题库及答案解析
- 2025年盘锦市兴隆台区辅警招聘考试题库附答案解析
- 2025国务院发展研究中心主管主办刊物招聘2人考试笔试备考题库及答案解析
- 2025河南平顶山市某机关事业单位公益岗位招聘8人考试笔试备考试题及答案解析
- 2025湖北恩施州事业单位面向驻恩部队随军家属招聘工作人员10人笔试考试参考试题及答案解析
- 2025年湖南省衡阳市祁东县辅警招聘考试题库附答案解析
- 2025国家电投集团中国重燃招聘18人考试笔试参考题库附答案解析
- 网络营销推广提成方案
- 常见岩性名称及符号
- 氨甲环酸制备工艺
- 软件工程生涯发展展示
- 韧性理论与韧性城市建设
- 体育社会学课件第十章社会体育的社会学分析
- 大学面试试讲PPT-机械原理
- 静脉治疗评估及输液工具选择
- 学习参考:有机化学中的电子效应
- GB/T 18376.3-2001硬质合金牌号第3部分:耐磨零件用硬质合金牌号
- 电力电子技术王兆安-课后答案
评论
0/150
提交评论