第03講 媒體播放器的制作
《第03講 媒體播放器的制作》由會(huì)員分享,可在線閱讀,更多相關(guān)《第03講 媒體播放器的制作(17頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第03講 媒體播放器本章介紹了媒體播放控件(Windows Media Player)的常用屬性和方法,并且利用它設(shè)計(jì)一個(gè)簡(jiǎn)單的媒體應(yīng)用程序媒體播放器。該媒體播放器可以播放Wave、AVI、MIDI和mp3等格式的文件。Windows Media Player控件的引入使得在Visual C# 2005環(huán)境下制作多媒體應(yīng)用程序變得非常的簡(jiǎn)單,只需要編寫幾行簡(jiǎn)單的代碼,就可以達(dá)到播放多媒體文件的目的。本章學(xué)習(xí)目標(biāo):(1)理解Windows Media Player控件的常用屬性。(2)學(xué)會(huì)使用Windows Media Player、Button、Panel、ListBox等控件設(shè)計(jì)多媒體播放器
2、程序。(3)通過(guò)本章實(shí)例,進(jìn)一步掌握Visual C# 2005較小型的Windows應(yīng)用程序開(kāi)發(fā)的基本思想。3.1 Windows Media Player控件Windows Media Player控件主要用于管理多媒體文件的記錄與回放,從概念上說(shuō),該控件就是一個(gè)完整的媒體播放器,它支持Wave、AVI、MIDI和mp3等格式。3.1.1 添加Windows Media Player控件Windows Media Player控件不在默認(rèn)的工具箱中,在設(shè)計(jì)多媒體應(yīng)用程序之前,需要將此控件添加到工具箱中,按以下步驟進(jìn)行:(1)在工具箱中單擊右鍵,彈出如圖3-1所示菜單。圖3-1 添加控件(2
3、)單擊【選擇項(xiàng)】菜單命令,彈出如圖3-2所示的【選擇工具箱項(xiàng)】對(duì)話框。圖3-2 【選擇工具箱項(xiàng)】對(duì)話框(3)打開(kāi)【COM組件】選項(xiàng)卡,并選中Windows Media Player組件復(fù)選框,然后單擊【確定】按鈕,則該控件被添加到工具箱中,如圖3-3所示。圖3-3 添加控件后的工具箱3.1.2 Windows Media Player控件簡(jiǎn)介在設(shè)計(jì)多媒體應(yīng)用程序時(shí),跟添加其他控件一樣,將Windows Media Player控件添加到窗體上,它在窗體上的外觀如圖3-4所示。圖3-4 媒體播放器控件的外觀從圖中可以看出,最上面的是顯示窗口,用于顯示媒體文件播放畫面,窗口下面是進(jìn)度條,進(jìn)度條下面
4、是播放按鈕和音量控制滑竿,從左至右依次為:播放、停止、前一個(gè)、后一個(gè)、音量開(kāi)關(guān)按鈕和音量調(diào)節(jié)器。媒體播放器控件的常用屬性有:(1)AllowDrop:允許拖動(dòng)。(2)ContextMenuStrip:允許用戶自定義彈出菜單。(3)fullScreen:用于設(shè)置是否全屏顯示。(4)Visible:是否可見(jiàn)。(5)PlayState:用于獲取媒體播放器的工作狀態(tài)。(6)URL:用于設(shè)置媒體播放器播放的路徑或地址。使用媒體播放器播放多媒體文件的方法非常簡(jiǎn)單,例如:/*MediaPlayer.URL = D:國(guó)歌.mp3; / 播放D盤上的國(guó)歌.mp3/*停止播放的代碼為:/*MediaPlayer.
5、URL = ; / 設(shè)為空字符串即停止播放/*下面用一個(gè)媒體播放器實(shí)例來(lái)介紹如何設(shè)計(jì)一個(gè)完整的媒體播放軟件。3.2 界面設(shè)計(jì)及屬性設(shè)置本節(jié)介紹媒體播放器的用戶界面設(shè)計(jì)以及窗體和窗體上各控件的屬性設(shè)置。3.2.1 界面設(shè)計(jì)新建一個(gè)Windows應(yīng)用程序,在窗體上依次放置ListBox、Windows Media Player、Panel和8個(gè)Button控件,如圖3-5所示(設(shè)置好屬性后)。再為窗體添加一個(gè)OpenFileDialog控件、一個(gè)FolderBrowserDialog控件和一個(gè)Timer控件,它們的作用分別是:(1)OpenFileDialog控件:用于打開(kāi)單個(gè)文件。(2)Fold
6、erBrowserDialog控件:用于添加媒體文件目錄。(3)Timer控件:用于控制連續(xù)播放媒體文件。添加完上述三個(gè)控件后,可以看到窗體設(shè)計(jì)器下方的組件板上出現(xiàn)了這三個(gè)組件,如圖3-5所示(設(shè)置好屬性后)。圖3-5 媒體播放器用戶界面3.2.2 屬性設(shè)置窗體和各控件的屬性設(shè)置如表3-1所示。表3-1 窗體和各控件的屬性控件類型控件名稱屬性設(shè)置結(jié)果FormForm1Text媒體播放器StartPositionCenterScreenMaximizeBoxFalseAutoSizeModeGrowAndShrinkWindows Media PlayerWindows Media Player
7、1NamemediaPlayerListBoxListBox1NamelstFileListOpenFileDialogOpenFileDialog1NameodlgMediaFolderBrowserDialogFolderBrowserDialog1NamefbdlgMediaTimerTimer1NametmrMediaPanelPanel1BorderStyleFixed3DButtonButton1NamebtnAddFileText添加歌曲Button2NamebtnAddFilesText添加目錄Button3NamebtnDeleteText刪除單曲Button4Namebtn
8、PlayText播放Button5NamebtnBackText上一首Button6NamebtnForwardText下一首Button7NamebtnReplayText單曲循環(huán)Button8NamebtnStopText停止3.3 編寫代碼因?yàn)槊襟w播放器需要用到DirectoryInfo、FileInfo等類,所以首先應(yīng)當(dāng)引入System.IO命名空間:/*using System.IO;/*接下來(lái)在代碼的通用段定義以下公共數(shù)組和變量:/*string fileList = new string10000; / 定義播放列表數(shù)的最大值int numOfMusic; / 選中的媒體文件的索
9、引號(hào)int selectOne; / 選中的音樂(lè)文件bool playOne = false; / 控制是否循環(huán)播放/*添加以下六個(gè)方法,分別用于添加單個(gè)媒體文件、添加媒體文件目錄、刪除媒體文件、播放媒體文件、打開(kāi)和關(guān)閉窗體上的按鈕。/*/ 添加單個(gè)媒體文件的方法/*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); /*/*/*/ 刪除單個(gè)媒體文件的方法/*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;/*/*接下來(lái)編寫窗體的載入(Load)事件代碼如下,用于初始化各數(shù)據(jù)和窗體上各按鈕控件的狀態(tài)。/*/ 窗體的載入事件代碼/*private void Form1_Load(object sender, EventArgs e) lstFileList.Items.CopyTo(fileList, 0); / 將列表框(lstFileList)中的列表項(xiàng)全部復(fù)制到
14、數(shù)組(fileList)中 numOfMusic = 0; / 選中第一個(gè)媒體文件 CloseBtn();/*/*為【添加文件】按鈕(btnAddFile)的Click事件添加以下代碼,添加媒體文件。/*/ 【添加文件】按鈕的單擊事件代碼/*private void btnAddFile_Click(object sender, EventArgs e) int i; odlgMedia.FileName = ; / 設(shè)置默認(rèn)文件名 odlgMedia.InitialDirectory = C:; / 設(shè)置默認(rèn)路徑 odlgMedia.Filter = mp3文件|*.mp3|所有文件|*.*
15、; / 設(shè)置文件類型 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事件添加以下代碼,添加媒體文件目錄,實(shí)現(xiàn)成批地添加媒體文件。/*/ 【添加目錄】按鈕的單擊事件
16、代碼/*private void btnAddFiles_Click(object sender, EventArgs e) fbdlgMedia.SelectedPath = C:; fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = 請(qǐng)選擇媒體文件目錄:; fbdlgMedia.ShowNewFolderButton = false; if (fbdlgMedia.ShowDialog() = DialogResult.OK) AddFiles(fbdlgMedia.SelectedPath, lstFileLis
17、t); if (lstFileList.Items.Count 0) OpenBtn(); /*/*為【刪除】按鈕(btnDelete)的Click事件添加以下代碼,實(shí)現(xiàn)從列表框中刪除選中的文件。/*/ 【刪除單曲】按鈕的單擊事件代碼/*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(不能刪除正在播放的文件, 錯(cuò)誤); 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事件代碼如下,用于實(shí)現(xiàn)播放功能。/*/ 【播
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事件添加以下代碼,用于實(shí)現(xiàn)播放下一首的功能。/*/ 【下一首】按鈕的單擊事件代碼/*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;/*/*為【單曲循環(huán)】按鈕(btnReplay)的Click事件添加以下代碼,單擊此按鈕實(shí)現(xiàn)“循環(huán)/停止循環(huán)”播放的功能。/*/ 【單曲循環(huán)】按鈕的單擊事件代碼/*private void btnReplay_Click(object sender, EventArgs e) if (playOne = true) playOne = false; btnReplay.FlatStyle = FlatStyle.S
22、tandard; / 設(shè)置按鈕外觀為三維 btnReplay.Text = 單曲循環(huán); else playOne = true; btnReplay.FlatStyle = FlatStyle.Popup; / 設(shè)置按鈕外觀為平面顯示 btnReplay.Text = 取消循環(huán); lstFileList.SelectedIndex = selectOne - 1;/*/*為【停止】按鈕(btnStop)的Click事件添加以下代碼,單擊此按鈕實(shí)現(xiàn)停止播放的功能。/*/ 【停止】按鈕的單擊事件代碼/*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事件添加以下代碼,控制必要時(shí)才讓【刪除】按鈕可用。/*/ 列表框lstFileList按鈕的SelectedIndexChanged事件代碼/*private void lstFileList_SelectedIndexChang
24、ed(object sender, EventArgs e) btnDelete.Enabled = true;/*/*最后給計(jì)時(shí)器控件(tmrMedia)的Tick事件添加以下代碼,這樣在播放完一首音樂(lè)后會(huì)自動(dòng)播放下一首,即實(shí)現(xiàn)連續(xù)播放的功能。/*/ 列表框tmrMedia按鈕的Tick事件代碼/*private void tmrMedia_Tick(object sender, EventArgs e) / 用Timer控件控制連續(xù)播放 if (mediaPlayer.playState = WMPLib.WMPPlayState.wmppsStopped) if (playOne = f
25、alse) if (selectOne lstFileList.Items.Count) selectOne += 1; else if (selectOne = lstFileList.Items.Count) / 如果列表中所有媒體文件都播放完畢,則從頭開(kāi)始。 selectOne = 1; lstFileList.SelectedIndex = selectOne - 1; Play(selectOne); /*/*3.4 運(yùn)行結(jié)果編譯并運(yùn)行程序,添加一些媒體文件后,雙擊列表框中的媒體文件,運(yùn)行結(jié)果如圖3-6所示。圖3-6 播放媒體文件單擊【刪除單曲】按鈕,因?yàn)榱斜砜蛑斜贿x中的媒體文件正在
26、播放,故不能刪除,如圖3-7所示。圖3-7 刪除正在播放的媒體文件接下來(lái)單擊【單曲循環(huán)】按鈕,循環(huán)播放選中的媒體文件,如圖3-8所示。圖3-8 循環(huán)播放選中的媒體文件小結(jié)本章首先介紹了Windows Media Player控件的常用屬性及其使用方法,以及如何將Windows Media Player控件添加到Visual C# 2005的工具箱中。然后利用它設(shè)計(jì)一個(gè)簡(jiǎn)單的媒體播放器。重點(diǎn)及難點(diǎn):(1)Windows Media Player控件的常用屬性;(2)使用Windows Media Player、Button、Panel、ListBox等控件設(shè)計(jì)多媒體播放器應(yīng)用程序。綜合練習(xí)三一、
27、選擇題1. Windows Media Player控件用于獲取媒體播放器的工作狀態(tài)的屬性是( )。A. AllowDropB. ContexMenuStripC. PlayStateD. URL2. Windows Media Player控件用于設(shè)置媒體播放器播放的路徑或地址的屬性是( )。A. AllowDropB. ContexMenuStripC. PlayStateD. URL3. DirectoryInfo和FileInfo類均位于( )命名空間中。A. System.Collections.GenericB. System.IOC. System.Windows.FormsD.
28、 System.Drawing4. 表示列表框被選中列表項(xiàng)的屬性是( )。A. SelectedItemB. SelectedIndexC. ItemsD. Text二、填空題1. Windows Media Player控件用于設(shè)置是否全屏顯示的屬性是 。2. 如要mediaPlayer1控件播放E盤MP3文件夾內(nèi)的“國(guó)歌.mp3”音樂(lè)文件,則需要編寫的播放程序代碼為 。三、問(wèn)答題1. 如何將Windows Media Player控件添加到工具箱中?2. 媒體播放器控件(Windows Media Player)主要的屬性有哪些,如何編寫播放媒體文件的代碼?四、上機(jī)操作題1. 上機(jī)實(shí)現(xiàn)一個(gè)類似于本章介紹的MP3播放器,并實(shí)現(xiàn)【隨機(jī)播放】功能。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)械設(shè)計(jì)基礎(chǔ)知識(shí)課件
- 績(jī)效改進(jìn)工具46頁(yè)課件
- 企業(yè)生產(chǎn)系統(tǒng)管理詳述
- 護(hù)理禮儀實(shí)習(xí)禮儀
- 燃燒與滅火(第1課時(shí))課件
- 2-1荒漠化的危害與治理課件(教育精品)
- 胎兒前腹壁畸形超聲診斷
- 羅庫(kù)溴銨注射液
- 定稿物理選修3-1電源和電流課件(教育精品)
- 教師師德講座
- 新人教版五年級(jí)下冊(cè)數(shù)學(xué)第四單元整理和復(fù)習(xí)PPT
- 費(fèi)馬引理與羅爾中值定理
- 新人教版《生物與環(huán)境組成生態(tài)系統(tǒng)》
- 商業(yè)銀行服務(wù)文化
- 天津中新生態(tài)城設(shè)計(jì)詳述