媒体播放器制作过程_第1页
媒体播放器制作过程_第2页
媒体播放器制作过程_第3页
媒体播放器制作过程_第4页
媒体播放器制作过程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、a Player 控件不在默认的工具箱中,在设计多媒体应用程 ,按以下步骤进行: 3-1 所示菜单。 二I列表视图(i) 全部显不 选择项Q) 按字母顺序耕序 重査工具箱(IJ 添加选项卡) 图3-1添加控件 (2)单击【选择项】菜单命令,弹出如图 对话框。 3-2所示的【选择工具箱项】 选择工具箱项 ,NET Framework 蛆件 COM 件 名称 I TrialEnd Class I TSHOOTCtrl Class Vi deoReikderCtl Class I VJSKostCtl Class I II WIA Video Freview Class I Wi 龙ombo Cla

4、ss 迁移向导OOEE自动对象 日历件1L0 跻径 C:Ffogr沏 FilesMnternet Ek. C AWIKDOWShelpTSRoot. dll C: WIHE07fSsyst em32Kqdvd, dll CAWlHEOWSKMicrQiEoft. HETVFra . C: KWIMTOffS Bys t e(n3Z Vc amc ex. dll DAVS2005Cominon7IDEWsffiia ., C: WiMBOtfS sys t em32 SHELL32. dll D:OfficeOFFICEl1KHSCAL. OCX HU 库 trialoc vj shoEt 1.

5、0 Hied VCWiz 乩 0 T Microsoft S Microsoft . t Windows hledia 语言: 版本: Flayer 语言中性 1 确定 I 取消 图3-2【选择工具箱项】对话框 (3)打开【COM组件】选项卡,并选中 选框,然后单击【确定】按钮,则该控件被添加到工具箱中,如图 Windows Media Player 组件复 3-3所示。 工具箱 图3-3添加控件后的工具箱 3.1.2 Windows Media Player 控件简介 Windows Media 在设计多媒体应用程序时,跟添加其他控件一样,将 Player控件添加到窗体上,它在窗体上的外观如

6、图 3-4所示。 AllowDroP :允许拖动。 ContextMenuStrip :允许用户自定义弹出菜单。 fullScreen :用于设置是否全屏显示。 Visible :是否可见。 PlayState:用于获取媒体播放器的工作状态。 图3-4媒体播放器控件的外观 从图中可以看出,最上面的是显示窗口, 用于显示媒体文件播放画面, 口下面是进度条,进度条下面是播放按钮和音量控制滑竿,从左至右依次为: 播放、停止、前一个、后一个、音量开关按钮和音量调节器。 媒体播放器控件的常用属性有: (1) (2) (3) (4) (5) (6)URL :用于设置媒体播放器播放的路径或地址。 使用媒体播

7、放器播放多媒体文件的方法非常简单,例如: /* 国歌 .mp3; / 播放 D 盘上的 国歌 .mp3 /* 停止播放的代码为: /* MediaPlayer.URL = ;/ 设为空字符串即停止播放 /* 面用一个媒体播放器实例来介绍如何设计一个完整的媒体播放软件。 3.2 界面设计及属性设置 本节介绍媒体播放器的用户界面设计以及窗体和窗体上各控件的属性设 置。 3.2.1 界面设计 新建一个 Windows 应用程序,在窗体上依次放置ListBox 、 Windows Media Player 、 Panel 和 8 个 Button 控件,如图 3-5 所示(设置好属性后) 再为窗体添加

8、一个 OpenFileDialog 控件、一个 FolderBrowserDialog 控件 和一个 Timer 控件,它们的作用分别是: (1) OpenFileDialog 控件:用于打开单个文件。 (2) FolderBrowserDialog 控件:用于添加媒体文件目录。 添加完上述三个控件后, 可以看到窗体设计 个组件,如图 3-5 所示(设置好属性后) 。 (3) Timer 控件:用于控制连续播放媒体文件。 器下方的组件板上出现了这三 添加文件添加目录 删除单曲 播放1上一首1下一首1 单曲循环 停止 IstFileLi st odlgWedia CTi fbdlgWedi a

9、Qi tmrHedi a 图3-5 媒体播放器用户界面 322属性设置 窗体和各控件的属性设置如表 表3-1 3-1所示。 窗体和各控件的属性 控件类型 控件名称 属性 设置结果 Form Form1 Text 媒体播放器 Start Positio n Cen terScree n MaximizeBox False AutoSizeMode GrowA ndShri nk Win dows Media P layer Win dows Media P Iayer1 Name media Player ListBox ListBox1 Name lstFileList Open FileDi

10、alog Open FileDialog1 Name odlgMedia FolderBrowserDialog FolderBrowserDialog1 Name fbdlgMedia Timer Timer1 Name tmrMedia Panel Pan el1 BorderStyle Fixed3D Butt on Butt on1 Name btn AddFile Text 添加歌曲 Butt on2 Name btn AddFiles Text 添加目录 Butt on3 Name btn Delete Text 删除单曲 Butt on4 Name bt nP lay Text

11、播放 Butt on5 Name btn Back Text 上一首 Butt on6 Name btnFo rward Text 下一首 Butt on7 Name btnRep lay Text 单曲循环 Butt on8 Name bt nStop Text 停止 3.3 编写代码 因为媒体播放器需要用到Directoryinfo、Fileinfo等类,所以首先应当弓 入System。命名空间: * using Syste m.IO; * 接下来在代码的通用段定义以下公共数组和变量: * string fileList = new string10000;/ 定义播放列表数的最大值 in

12、t numOfMusic;/选中的媒体文件的索引号 int selectOne;II选中的音乐文件 bool playOne = false;II控制是否循环播放 II* 添加媒体文件目录、 删 添加以下六个方法, 分别用于添加单个媒体文件、 除媒体文件、播放媒体文件、打开和关闭窗体上的按钮。 * /添加单个媒体文件的方法 * P ublic void AddFile(stn ng p ath) if (num OfMusic 10000) numO fMusic += 1; fileList n umOfMusic = path; else MessageBox.Show(”不能添加文件r,

13、播放列表已满); /* /* /* / 添加媒体文件目录的方法 /* public void 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 +=

14、 ; strFile = f.Name; lstFileList.Items.Add(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; /* /* /

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

16、/* public void CloseBtn() btnPlay.Enabled = false; btnBack.Enabled = false; btnForward.Enabled = false; btnStop.Enabled = false; btnReplay.Enabled = false; btnDelete.Enabled = false; /* /* 接下来编写窗体的载入( Load )事件代码如下,用于初始化各数据和窗 体上各按钮控件的状态。 /* / 窗体的载入事件代码 /* private void Form1_Load(object sender, EventA

17、rgs e) lstFileList.Items.CopyTo(fileList, 0); / 将列表框( lstFileList )中的列表项全部复制到数组( fileList )中 numOfMusic = 0; / 选中第一个媒体文件 CloseBtn(); /* /*为【添加文件】按钮( btnAddFile )的 Click 事件添加以下代码,添加媒 体文件。 /* / 【添加文件】按钮的单击事件代码 /* private void btnAddFile_Click(object sender, EventArgs e) / 设置默认文件名 / 设置默认路径 / 设置文件类型 int

18、 i; odlgMedia.FileName = ; odlgMedia.InitialDirectory = C:; odlgMedia.Filter = mp3 文件 |*.mp3| 所有文件 |*.*; 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

19、0) OpenBtn(); /* /* 再为【添加目录】按钮( btnAddFiles )的 Click 事件添加以下代码,添加 媒体文件目录,实现成批地添加媒体文件。 /* / 【添加目录】按钮的单击事件代码 /* private void btnAddFiles_Click(object sender, EventArgs e) H. fbdlgMedia.SelectedPath = C:; fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = 请选择媒体文件目录: fbdlgMedia.ShowNewFolder

20、Button = false; if (fbdlgMedia.ShowDialog() = DialogResult.OK) AddFiles(fbdlgMedia.SelectedPath, lstFileList); if (lstFileList.Items.Count 0) OpenBtn(); /* /* 为【删除】按钮(btnDelete)的Click事件添加以下代码,实现从列表框 中删除选中的文件 /* / 【删除单曲】按钮的单击事件代码 /* private void btnDelete_Click(object sender, EventArgs e) int i = lst

21、FileList.SelectedIndex; if (lstFileList.SelectedIndex = 0) if (selectOne = lstFileList.SelectedIndex + 1) 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

22、 = 0; /* /* 编写【播放】按钮(btnPlay )的Click事件代码如下,用于实现播放功 能。 /* / 【播放】按钮的单击事件代码 /* 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 ls

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

24、FileList.SelectedIndex 0) lstFileList.SelectedIndex = 0; selectOne = lstFileList.SelectedIndex + 1; Play(selectOne); btnStop.Enabled = true; btnReplay.Enabled = true; /* /* 为【单曲循环】按钮( btnReplay )的 Click 事件添加以下代码,单击此 按钮实现“循环 /停止循环”播放的功能。 /* / 【单曲循环】按钮的单击事件代码 /* private void btnReplay_Click(object sen

25、der, EventArgs e) if (playOne = true) playOne = false; / 设置按钮外观为三维 btnReplay.FlatStyle = FlatStyle.Standard; btnReplay.Text = 单曲循环 ; else playOne = true; / 设置按钮外观为平面显示 btnReplay.FlatStyle = FlatStyle.Popup; btnReplay.Text = 取消循环 ; lstFileList.SelectedIndex = selectOne - 1; /* /* 为【停止】按钮(btnStoP)的Cli

26、ck事件添加以下代码,单击此按钮实 现停止播放的功能。 /* / 【停止】按钮的单击事件代码 /* private void btnStop_Click(object sender, EventArgs e) mediaPlayer.URL = ; this.Text = 媒体播放器 ; tmrMedia.Enabled = false; btnReplay.Enabled = false; lstFileList.SelectedIndex = selectOne - 1; /* /* 为播放列表框 ( lstFileList )的 SelectedIndexChanged 事件添加以下代码

27、, 控制必要时才让【删除】按钮可用。 /* / 列表框 lstFileList 按钮的 SelectedIndexChanged 事件代码 /* private void lstFileList_SelectedIndexChanged(object sender, EventArgs e) btnDelete.Enabled = true; /* /* 最后给计时器控件( tmrMedia )的 Tick 事件添加以下代码,这样在播放 完一首音乐后会自动播放下一首,即实现连续播放的功能。 /* / 列表框 tmrMedia 按钮的 Tick 事件代码 /* private void tmrM

28、edia_Tick(object sender, EventArgs e) / 用 Timer 控件控制连续播放 if (mediaPlayer.playState = WMPLib.WMPPlayState.wmppsStopped) if (playOne = false) if (selectOne 3 正在播放 * :用1 工L - 熬空 A 3 fl p Oi m 3 耳 p + 3 玄 3 m 3 _3 斗 PS p p p 战mjm m良 m m 去心哺哭蒯诃诃人杖 t-J.jh 4 V 了丄 _ M 占 _, 3 3 m 3 m p p p m m到m你 霜你不吗了閃m m I

29、 皿的愛做你去皿痕由 我伤的你的狛愛圆閃播肆皮很我抱失崟无理 照我你让我谁花的月m诸m海羊定你以于育了个 星怕说想是了香你好蝶昏 人着一记可终水碎万_ 红别别不谁为丁做花化董 男披他忘我我香心一 图3-6播放媒体文件 单击【删除单曲】按钮,因为列表框中被选中的媒体文件正在播放,故不 能删除,如图3-7所示。 O aw 红星B我去战斗閃 A 别怕莪伤心mp3 别说你的眼泪我无所谓 不想让你哭.mp3 谁是我的新y良mp3 为了垂陀3 丁香花.mpS 橄係的爰人5p3 花好月囱夜 mp3 化蝶.mpS 萤昏.mp3 鼬Z 男人海洋.mpS 援着羊皮的亲 mp3 他一定很爱悅5p3 忘记你莪做栄到m

30、p3 我可以抱你吗.mp3 我终于失去了你肝;3 香水有m mn3 心碎了无mp3 一万个理由.mp3 * * .ncnBFB W 添加文件H添加目录删除单诙 S3K 上一首 下一首 单曲循环 ttl ttl 停止 图3-7删除正在播放的媒体文件 接下来单击【单曲循环】按钮,循环播放选中的媒体文件, 如图3-8所示 ffl正在-天路 p3 3 斤 P 尊 m 3 耳 P i 3ft 3 m 3 _3 斗 PS p p p ms : 去心眼哭新诃诃人杖 3 3 m 3 m p p p :到A你閃歸 霜你不吗了閃皿m I 皿的愛做你去皿痕由 我伤的你的狛怕愛圆丙溜峯皮很我抱失崟无理 星怕说想是了香你好蝶昏鹽人着一记可终水碎万 红别别不谁为丁做花化S醫男披他忘我我香心一 v r Xh *.亡-t FV r 7

温馨提示

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

评论

0/150

提交评论