第03讲 媒体播放器的制作_第1页
第03讲 媒体播放器的制作_第2页
第03讲 媒体播放器的制作_第3页
第03讲 媒体播放器的制作_第4页
第03讲 媒体播放器的制作_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、第03讲 媒体播放器本章介绍了媒体播放控件(Windows Media Player)的常用属性和方法,并且利用它设计一个简单的媒体应用程序媒体播放器。该媒体播放器可以播放Wave、AVI、MIDI和mp3等格式的文件。Windows Media Player控件的引入使得在Visual C# 2005环境下制作多媒体应用程序变得非常的简单,只需要编写几行简单的代码,就可以达到播放多媒体文件的目的。本章学习目标:(1)理解Windows Media Player控件的常用属性。(2)学会使用Windows Media Player、Button、Panel、ListBox等控件设计多媒体播放器

2、程序。(3)通过本章实例,进一步掌握Visual C# 2005较小型的Windows应用程序开发的基本思想。3.1 Windows Media Player控件Windows Media Player控件主要用于管理多媒体文件的记录与回放,从概念上说,该控件就是一个完整的媒体播放器,它支持Wave、AVI、MIDI和mp3等格式。3.1.1 添加Windows Media Player控件Windows Media Player控件不在默认的工具箱中,在设计多媒体应用程序之前,需要将此控件添加到工具箱中,按以下步骤进行:(1)在工具箱中单击右键,弹出如图3-1所示菜单。图3-1 添加控件(2

3、)单击【选择项】菜单命令,弹出如图3-2所示的【选择工具箱项】对话框。图3-2 【选择工具箱项】对话框(3)打开【COM组件】选项卡,并选中Windows Media Player组件复选框,然后单击【确定】按钮,则该控件被添加到工具箱中,如图3-3所示。图3-3 添加控件后的工具箱3.1.2 Windows Media Player控件简介在设计多媒体应用程序时,跟添加其他控件一样,将Windows Media Player控件添加到窗体上,它在窗体上的外观如图3-4所示。图3-4 媒体播放器控件的外观从图中可以看出,最上面的是显示窗口,用于显示媒体文件播放画面,窗口下面是进度条,进度条下面

4、是播放按钮和音量控制滑竿,从左至右依次为:播放、停止、前一个、后一个、音量开关按钮和音量调节器。媒体播放器控件的常用属性有:(1)AllowDrop:允许拖动。(2)ContextMenuStrip:允许用户自定义弹出菜单。(3)fullScreen:用于设置是否全屏显示。(4)Visible:是否可见。(5)PlayState:用于获取媒体播放器的工作状态。(6)URL:用于设置媒体播放器播放的路径或地址。使用媒体播放器播放多媒体文件的方法非常简单,例如:/*MediaPlayer.URL = D:国歌.mp3; / 播放D盘上的国歌.mp3/*停止播放的代码为:/*MediaPlayer.

5、URL = ; / 设为空字符串即停止播放/*下面用一个媒体播放器实例来介绍如何设计一个完整的媒体播放软件。3.2 界面设计及属性设置本节介绍媒体播放器的用户界面设计以及窗体和窗体上各控件的属性设置。3.2.1 界面设计新建一个Windows应用程序,在窗体上依次放置ListBox、Windows Media Player、Panel和8个Button控件,如图3-5所示(设置好属性后)。再为窗体添加一个OpenFileDialog控件、一个FolderBrowserDialog控件和一个Timer控件,它们的作用分别是:(1)OpenFileDialog控件:用于打开单个文件。(2)Fold

6、erBrowserDialog控件:用于添加媒体文件目录。(3)Timer控件:用于控制连续播放媒体文件。添加完上述三个控件后,可以看到窗体设计器下方的组件板上出现了这三个组件,如图3-5所示(设置好属性后)。图3-5 媒体播放器用户界面3.2.2 属性设置窗体和各控件的属性设置如表3-1所示。表3-1 窗体和各控件的属性控件类型控件名称属性设置结果FormForm1Text媒体播放器StartPositionCenterScreenMaximizeBoxFalseAutoSizeModeGrowAndShrinkWindows Media PlayerWindows Media Player

7、1NamemediaPlayerListBoxListBox1NamelstFileListOpenFileDialogOpenFileDialog1NameodlgMediaFolderBrowserDialogFolderBrowserDialog1NamefbdlgMediaTimerTimer1NametmrMediaPanelPanel1BorderStyleFixed3DButtonButton1NamebtnAddFileText添加歌曲Button2NamebtnAddFilesText添加目录Button3NamebtnDeleteText删除单曲Button4Namebtn

8、PlayText播放Button5NamebtnBackText上一首Button6NamebtnForwardText下一首Button7NamebtnReplayText单曲循环Button8NamebtnStopText停止3.3 编写代码因为媒体播放器需要用到DirectoryInfo、FileInfo等类,所以首先应当引入System.IO命名空间:/*using System.IO;/*接下来在代码的通用段定义以下公共数组和变量:/*string fileList = new string10000; / 定义播放列表数的最大值int numOfMusic; / 选中的媒体文件的索

9、引号int selectOne; / 选中的音乐文件bool playOne = false; / 控制是否循环播放/*添加以下六个方法,分别用于添加单个媒体文件、添加媒体文件目录、删除媒体文件、播放媒体文件、打开和关闭窗体上的按钮。/*/ 添加单个媒体文件的方法/*public void AddFile(string path) if (numOfMusic 10000) numOfMusic += 1; fileListnumOfMusic = path; else MessageBox.Show(不能添加文件!,播放列表已满); /*/*/*/ 添加媒体文件目录的方法/*public v

10、oid AddFiles(string path,ListBox lstFiles) DirectoryInfo dir = new DirectoryInfo(path); foreach (FileInfo f in dir.GetFiles (*.mp3) AddFile(f.FullName); int i; string strFile = Convert.ToString(numOfMusic); for (i = 1; i = 5 - strFile.Length; i+) strFile += ; strFile = f.Name; lstFileList.Items.Add(

11、strFile); foreach (DirectoryInfo d in dir.GetDirectories() AddFiles(d.FullName, lstFileList); /*/*/*/ 删除单个媒体文件的方法/*public void DelFile(int selectNum) int i; for (i = selectNum; i = numOfMusic - 1; i+) fileListi = fileListi + 1; numOfMusic -= 1;/*/*/*/ 播放媒体文件的方法/*public void Play(int selectNum) media

12、Player.URL = fileListselectNum; / 播放选中的媒体文件 this.Text = 正在播放 - + lstFileList.SelectedItem.ToString();/*/*/*/ 使部分按钮可用的方法/*public void OpenBtn() btnPlay.Enabled = true; btnBack.Enabled = true; btnForward.Enabled = true;/*/*/*/ 使部分按钮不可用的方法/*public void CloseBtn() btnPlay.Enabled = false; btnBack.Enable

13、d = false; btnForward.Enabled = false; btnStop.Enabled = false; btnReplay.Enabled = false; btnDelete.Enabled = false;/*/*接下来编写窗体的载入(Load)事件代码如下,用于初始化各数据和窗体上各按钮控件的状态。/*/ 窗体的载入事件代码/*private void Form1_Load(object sender, EventArgs e) lstFileList.Items.CopyTo(fileList, 0); / 将列表框(lstFileList)中的列表项全部复制到

14、数组(fileList)中 numOfMusic = 0; / 选中第一个媒体文件 CloseBtn();/*/*为【添加文件】按钮(btnAddFile)的Click事件添加以下代码,添加媒体文件。/*/ 【添加文件】按钮的单击事件代码/*private void btnAddFile_Click(object sender, EventArgs e) int i; odlgMedia.FileName = ; / 设置默认文件名 odlgMedia.InitialDirectory = C:; / 设置默认路径 odlgMedia.Filter = mp3文件|*.mp3|所有文件|*.*

15、; / 设置文件类型 if (odlgMedia.ShowDialog() = DialogResult.OK) string path = odlgMedia.FileName; FileInfo f = new FileInfo(path); AddFile(f.FullName); string strFile = Convert.ToString(numOfMusic); for (i = 1; i 0) OpenBtn(); /*/*再为【添加目录】按钮(btnAddFiles)的Click事件添加以下代码,添加媒体文件目录,实现成批地添加媒体文件。/*/ 【添加目录】按钮的单击事件

16、代码/*private void btnAddFiles_Click(object sender, EventArgs e) fbdlgMedia.SelectedPath = C:; fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = 请选择媒体文件目录:; fbdlgMedia.ShowNewFolderButton = false; if (fbdlgMedia.ShowDialog() = DialogResult.OK) AddFiles(fbdlgMedia.SelectedPath, lstFileLis

17、t); if (lstFileList.Items.Count 0) OpenBtn(); /*/*为【删除】按钮(btnDelete)的Click事件添加以下代码,实现从列表框中删除选中的文件。/*/ 【删除单曲】按钮的单击事件代码/*private void btnDelete_Click(object sender, EventArgs e) int i = lstFileList.SelectedIndex; if (lstFileList.SelectedIndex = 0) if (selectOne = lstFileList.SelectedIndex + 1) & (medi

18、aPlayer.URL != ) MessageBox.Show(不能删除正在播放的文件, 错误); else DelFile(i + 1); lstFileList.Items.RemoveAt(i); if (i lstFileList.Items.Count) lstFileList.SelectedIndex = i; else if (lstFileList.Items.Count = 0) CloseBtn(); else lstFileList.SelectedIndex = 0; /*/*编写【播放】按钮(btnPlay)的Click事件代码如下,用于实现播放功能。/*/ 【播

19、放】按钮的单击事件代码/*private void btnPlay_Click(object sender, EventArgs e) if (lstFileList.SelectedIndex 0) lstFileList.SelectedIndex -= 1; else if (lstFileList.SelectedIndex = 0) lstFileList.SelectedIndex = lstFileList.Items.Count - 1; else lstFileList.SelectedIndex = numOfMusic - 1; selectOne = lstFileLi

20、st.SelectedIndex + 1; Play(selectOne); btnStop.Enabled = true; btnReplay.Enabled = true;/*/*为【下一首】按钮(btnForward)的Click事件添加以下代码,用于实现播放下一首的功能。/*/ 【下一首】按钮的单击事件代码/*private void btnForward_Click(object sender, EventArgs e) if (lstFileList.SelectedIndex 0) lstFileList.SelectedIndex = 0; selectOne = lstFil

21、eList.SelectedIndex + 1; Play(selectOne); btnStop.Enabled = true; btnReplay.Enabled = true;/*/*为【单曲循环】按钮(btnReplay)的Click事件添加以下代码,单击此按钮实现“循环/停止循环”播放的功能。/*/ 【单曲循环】按钮的单击事件代码/*private void btnReplay_Click(object sender, EventArgs e) if (playOne = true) playOne = false; btnReplay.FlatStyle = FlatStyle.S

22、tandard; / 设置按钮外观为三维 btnReplay.Text = 单曲循环; else playOne = true; btnReplay.FlatStyle = FlatStyle.Popup; / 设置按钮外观为平面显示 btnReplay.Text = 取消循环; lstFileList.SelectedIndex = selectOne - 1;/*/*为【停止】按钮(btnStop)的Click事件添加以下代码,单击此按钮实现停止播放的功能。/*/ 【停止】按钮的单击事件代码/*private void btnStop_Click(object sender, EventA

23、rgs e) mediaPlayer.URL = ; this.Text = 媒体播放器; tmrMedia.Enabled = false; btnReplay.Enabled = false; lstFileList.SelectedIndex = selectOne - 1;/*/*为播放列表框(lstFileList)的SelectedIndexChanged事件添加以下代码,控制必要时才让【删除】按钮可用。/*/ 列表框lstFileList按钮的SelectedIndexChanged事件代码/*private void lstFileList_SelectedIndexChang

24、ed(object sender, EventArgs e) btnDelete.Enabled = true;/*/*最后给计时器控件(tmrMedia)的Tick事件添加以下代码,这样在播放完一首音乐后会自动播放下一首,即实现连续播放的功能。/*/ 列表框tmrMedia按钮的Tick事件代码/*private void tmrMedia_Tick(object sender, EventArgs e) / 用Timer控件控制连续播放 if (mediaPlayer.playState = WMPLib.WMPPlayState.wmppsStopped) if (playOne = f

25、alse) if (selectOne lstFileList.Items.Count) selectOne += 1; else if (selectOne = lstFileList.Items.Count) / 如果列表中所有媒体文件都播放完毕,则从头开始。 selectOne = 1; lstFileList.SelectedIndex = selectOne - 1; Play(selectOne); /*/*3.4 运行结果编译并运行程序,添加一些媒体文件后,双击列表框中的媒体文件,运行结果如图3-6所示。图3-6 播放媒体文件单击【删除单曲】按钮,因为列表框中被选中的媒体文件正在播放,故不能删除,如图3-7所示。图3-7 删除正在播放的媒体文件接下来单击【单曲循环】按钮,循环播放选中的媒体文件,如图3-8所示。图3-8 循环播放选中的媒体文件小结

温馨提示

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

评论

0/150

提交评论