第7章多媒体编程7.1开发多媒体应用程序概述多媒体应用程序集动画制作、美术设计、视频编辑、声音处理和程序设计编写于一体,通过友好的人机对话界面及交互性,可动态地表达内容主题,具有强大的艺术感染力与视觉冲击力。在.NET框架中,利用Graphics对象可以动态绘制图形图像,即可以设计制作动画特效;利用ImageAnimator对象设计制作GIF动画效果;利用Time控件也可以制作不同的动画效果;还可以利用ActiveX控件设计制作AVI动画播放器、Flash动画播放、MP3音乐播放器和屏幕保护程序。7.2利用Graphics对象制作雪花飘飘动画效果本实例是利用Graphics对象FillEllipse方法和For循环语句动态绘制大小、位置不同的椭圆,从而产生雪花飘飘动画效果。在实例中还利用数组技术和Random随机对象,前面章节已详细讲解了Graphics对象FillEllipse方法、For循环语句和数组,下面来重点讲解一下Random随机对象。Random随机对象可以表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。该对象常用方法意义如下:Next()方法:返回非负随机数。NextBytes()方法:用随机数填充指定字节数组的元素。NextDouble()方法:返回一个介于0.0和1.0之间的随机数。Random()方法:使用指定的种子值初始化System.Random类的新实例。下面来具体讲解雪花飘飘动画效果的实现方法。1)单击菜单栏中的“文件/新建/项目”(快捷键:Ctrl+Shift+N),打开“新建项目”对话框,项目类型选择“VisualC#”,模板选择“Windows窗体应用程序”项.,名称为“Ex07_1”。2)设置好各参数后,单击“确定”按钮,就可以创建Windows窗体应用程序。3)单击菜单栏中的“视图/属性窗口”命令,打开“属性”面板,然后设置窗体的“BackColor”属性为“Black”,“FormBorderStyle”属性为“None”,如图7-1所示。0第7章多媒体编程2图7-1设置窗体属性4)最后设置窗体的“WindowState”属性为“Maximized”,这样程序运行后就会全屏显示。5)添加代码。双击窗体,添加窗体的加载事件代码,具体如下:峰杰工作室36)单击属性面板中的事件按钮,然后选择“DoubleClick”事件,如图7-2所示.图7-2窗体事件7)双击“DoubleClick”事件,添加该事件代码,具体如下:8)运行程序。单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的按钮,运行程序,就可以看到雪花飘飘动画效果,如图7-3所示。0第7章多媒体编程4图7-3雪花飘飘动画效果9)双击窗体,就可以退出程序。7.3利用Timer控件制作商品展示动画效果Timer控件实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于Windows窗体应用程序中,并且必须在窗口中使用。该控件常用属性、方法和事件意义如下:Enabled属性:获取或设置计时器是否正在运行。如果计时器当前处于启用状态,则为true;否则为false。默认为false。Interval属性:获取或设置在相对于上一次发生的Timer.Tick事件引发Timer.Tick事件之前的时间(以毫秒为单位)。Tag属性:获取或设置一个任意字符串,表示某种类型的用户状态。Start方法:启动计时器。Stop方法:停止计时器。Timer方法:将指定的容器与Timer类的新实例一起初始化。Dispose方法:处置由计时器使用的资源(内存除外)。Tick事件:当指定的计时器间隔已过去而且计时器处于启用状态时发生。本实例还应用了PictureBox控件的MouseEnter和MouseEnter事件在鼠标指针进入PictureBox控件时发生。MouseLeave事件在鼠标指针离开PictureBox控件时发生。本实例还应用了Panel控件和ToolTip控件,这两个控件前面章节已讲过,这里不再多说。下面来具体讲解商品展示动画效果的实现方法。1)单击菜单栏中的“文件/新建/项目”(快捷键:Ctrl+Shift+N),打开“新建项目”对话框,项目类型选择“VisualC#”,模板选择“Windows窗体应用程序”项.,名称为“Ex07_2”。2)设置好各参数后,单击“确定”按钮,就可以创建Windows窗体应用程序,然后设置“Text”属性为“利用Timer控件制作商品展示动画效果”,如图7-4所示。图7-4设置窗体属性3)添加面板控件。单击工具箱中的控件,在窗体中添加该控件,然后设置“BorderStyle”属性为“Fixed3D”,如图7-5所示。峰杰工作室5图7-5添加面板控件4)添加提示信息控件。单击工具箱中的控件,然后按下鼠标左键在窗体上绘制,就可以添加到应用程序中。5)添加图像控件。单击工具箱中的控件,在窗体中单击添加该控件,然后设置“BorderStyle”属性为“Fixed3D”,如图7-6所示。图7-6添加图像控6)选择PictureBox控件,单击“Image”属性后面的按钮,弹出“选择资源”对话框,如图7-7所示。图7-7选择资源对话框7)单击“导入”按钮,弹出“打开”对话框,选择要加载的图像,如图7-8所示。0第7章多媒体编程6图7-8打开对话框8)单击“打开”按钮,就返回到选择资源对话框,然后再单击“确定”按钮,即可把图像加载到PictureBox控件上,然后设置其“SizeMode”属性为“StretchImage”,如图7-9所示。图7-9加载图像9)ToolTip1上的ToolTip为“美食,价格:20元”,这样10)峰杰工作室711)添加计时器并设置其属性。单击工具箱中的控件,然后按下鼠标左键在窗体上绘制,就可以添加到应用程序中,然后在属性面板中设置其“Interval”属性值为“50”,“Enabled”属性为“False”,如图7-12所示。图7-12添加计时器控件12)双击窗体,添加窗体的加载事件代码,具体如下:13)14)单击属性面板中的事件按钮,然后选择“MouseEnter”事件,如图7-13所示。0第7章多媒体编程8图7-13事件面板15)MouseEnter”事件,添加该事件代码,具体如下:16)添加该事件代码,具体如下:17)MouseEnter和18)运行程序。单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的按钮,运行程序,就可以看到商品展示动画效果,如图7-14所示。图7-14商品展示动画效果19)当鼠标指向图像时,商品展示动画会停止,会显示相应的提示信息,如图7-15所示。图7-15图像提示信息峰杰工作室97.4图像动画ImageAnimator对象利用图像动画ImageAnimator对象可以进行动画处理,这类动画是包含基于时间的帧的图像,即GIF动画效果。该对象常用方法意义如下:Animate方法该方法可以将多帧图像显示为动画,即实现GIF动画,其语法结构如下:publicstaticvoidAnimate(System.Drawing.Imageimage,System.EventHandleronFrameChangedHandler)各参数意义如下:1、image:要动画处理的System.Drawing.Image对象。2、onFrameChangedHandler:一个EventHandler对象,它指定在动画帧发生更改时调用的方法。还要注意,该方法没有返回值。CanAnimate方法该方法返回一个布尔值,该值指示指定图像是否包含基于时间的帧,即判断是否可以播放GIF动画,其语法结构如下:publicstaticboolCanAnimate(System.Drawing.Imageimage)各参数意义如下:1、Image:要测试的System.Drawing.Image对象。2、注意,如果指定图像包含基于时间的帧,则此方法返回true;否则返回false。StopAnimate方法该方法可以停止播放GIF动画,其语法结构如下:publicstaticvoidStopAnimate(System.Drawing.Imageimage,System.EventHandleronFrameChangedHandler)各参数意义如下:1、image:要停止动画处理的System.Drawing.Image对象。2、onFrameChangedHandler:一个EventHandler对象,它指定在动画帧发生更改时调用的方法。还要注意,该方法没有返回值。UpdateFrames方法该方法可以使帧在指定的图像中前移。新帧在下一次呈现图像时绘制,此方法只适用于包含基于时间的帧的图像,其语法结构如下:publicstaticvoidUpdateFrames(System.Drawing.Imageimage)各参数意义如下:1、image:要为其更新帧的System.Drawing.Image对象。2、注意,该方法没有返回值。0第7章多媒体编程10实例利用ImageAnimator对象实现GIF动画1)单击菜单栏中的“文件/新建/项目”(快捷键:Ctrl+Shift+N),打开“新建项目”对话框,项目类型选择“VisualC#”,模板选择“Windows窗体应用程序”项.,名称为“Ex07_3”。2)设置好各参数后,单击“确定”按钮,就可以创建Windows窗体应用程序,然后设置“Text”属性为“利用ImageAnimator对象实现GIF动画”,如图7-16所示。图7-16设置窗体属性3)添加框架控件。单击工具箱中的控件,在窗体中单击添加该控件,并设置其“Text”属性为“GIF动画”,“BackColor”属性设置为“Transparent”,如图7-17所示。图7-17添加框架控件4)最后在窗体中添加3个按钮,设置他们的属性及位置后效果如图7-18所示。图7-18添加按钮5)添加代码。双击窗体,进入代码视图,首先定义公用变量并赋值,具体代码如下:峰杰工作室116)自定义动画帧发生更改时的方法OnFrameChanged,具体代码如下:7)自定义播放GIF动画函数,实现动态播放GIF动画,具体代码如下:8)重写窗体的OnPaint事件方法,具体代码如下:9)双击“播放动画”按钮,添加该按钮的单击事件代码,具体代码如下:10)双击“停止动画”按钮,添加该按钮的单击事件代码,具体代码如下:11)双击“退出程序”按钮,添加该按钮的单击事件代码,具体代码如下:0第7章多媒体编程1212)运行程序。单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的按钮,运行程序,就会自动加载指定的GIF动画,单击“播放动画”按钮,就可以播放GIF动画,如图7-19所示.。图7-19播放GIF动画13)单击“停止动画”按钮,GIF动画就停止播放,单击“退出程序”按钮,就可以关闭程序。7.5ActiveX多媒体播放控件VisualC#.NET2008提供了3个ActiveX多媒体播放控件,分别是MicrosoftAnimationControl控件、ShockwaveFlashObject控件和WindowsMediaPlayer控件。利用这3个控件可以播放常见的音频和视频等基本的多媒体信息。7.5.1MicrosoftAnimationControl控件MicrosoftAnimationControl控件可以播放无声的视频动画AVI文件。AVI动画类似于电影,由若干帧位图组成。虽然AVI动画可以有声音,但该控件不能播放有声音的AVI文件。在使用该控件播放AVI文件时,它使用了一个独立的线程,因此,应用程序不会被阻塞,可以继承在自己的进程中运行。MicrosoftAnimationControl控件并不在默认新建的工程文件中,要使用该控件需要先进行加载,具体方法如下:在工具箱中单