【程序開發小記】VB.NET音樂播放器


寫在前面的話:

      為了營造一個很好的交流學習的環境,也是為了迎合學校畢業設計的需求,開通了博客園。在下學期伊始,會每星期更新畢業設計的進度。博客業已開通,為了交流學習,要只是更新畢業設計的進度顯得有些做作。博主並不是好看書時寫些小評的主兒,遂不知有和內容好獻於此,只得將之前課程中或是實習時開發的程序在此做個簡述。

      因這些項目也是博主心血,也是怕某些學弟學妹直接搬用引發事端,不便將源碼原封不動擺在這里,在此只做簡要說明。

若有意願交流學習,可以在評論或是私信留下聯系方式。

      話不多說,接下來直奔主題。

 

起初接到這個課題的時候有如下要求:

①本題要求完成視窗程序;

②界面設計美觀、溫馨和諧 / 炫酷搶眼;

③在用戶操作時,有向用戶提供的操作提示和反饋信息顯示;

④能實現 MP3 等主要音頻文件的打開、播放、暫停、停止;

⑤能管理播放隊列,能對播放隊列進行添加、刪除、調整順序等操作,能保存多個播放列表;

⑥在完成必要功能的基礎上,可以跟出題教師交流學生個人的想法,在得到確認后可進一步設計更多與音樂文件播放有關的功能。

對於要求6,與出題教師交流,對音樂播放器加了歌詞同步功能。

經需求分析后,得出功能示意圖如下:

 

 

      熟悉vb語言的同學看到這里相信對程序已經有一個大致的想法了,的確音樂播放器的開發並不難,可以學習的借鑒的示例也不少,不過vb.net在控件的使用上與vb上還是有很大的不同,相信這也是同樣使用vb.net開發的同學共同的痛。

      言歸正傳,音樂播放控制模塊,實現音樂媒體文件的播放、暫停、切換等具體功能,提供較好的與用戶交互的音樂控制界面,是音樂文件播放器的工具和門面。將音樂播放控制模塊作為音樂控制的工具,主要通過WindowsMediaPlayer控件實現。多媒體應用是非常重要的一類應用,但.NET環境中並沒有自帶多媒體控件。本次實習采用的WindowsMediaPlayer控件不是系統IDE環境中自帶的控件,但又是常用的一個重要控件。通過這個控件,我們可以寫出多媒體播放例子,並對音樂播放的各種狀態進行控制。

      音樂列表管理方面,是音樂文件播放器的軸心。有效的管理音樂播放列表,是實現音樂自由切換、自由添加刪除等功能的前提。實現該部分,選擇采用DataGridView控件實現。眾多教程和網絡資源在完成同類任務時,多是選用ListBox控件。采用ListBox控件調用多個同時記錄歌曲文件的文件名,URL等信息,這樣做操作繁瑣,且不利於統一管理,用戶也不能直觀的看到歌曲的多種信息。現采用DataGridView控件,DataGridView控件屬於數據控件,在實現數據管理上具有明顯優勢。DataGridView控件可添加多列,且該控件可自行對數據按名稱排序。另外將DataGridView控件的SelectionMode屬性值設置為FullRowSelect后,可直接選中需求歌曲的全部信息,即選擇歌曲文件名即為選擇了歌曲的文件路徑,減少了ListBox實現該功能的繁瑣操作。DataGridView控件同時也便於將已添加信息存於到EXCEL表格文件中實現列表的單文件存儲。

      操作提示和反饋信息顯示,主要是通過文件版本信息以用戶反饋窗體以及部分案件可顯示的氣泡實現。是提高交互友好化的主要方法。

展示一下博主在開發該項目時的具體設計如下:

Form1:(播放控制窗體、音樂文件播放器主界面)

AxWindowsMediaPlayer1:多媒體控件,直接用於播放,多次調用。

Label1~12:當前播放音樂的標題、進度、總時長等信息顯示,以及部分按鍵。

NotifyIcon1:托盤圖標顯示。

PictureBox1~5:主要用作按鍵的設置。

Timer1~4:用於對事件的監聽,如刷新當前播放進度、判斷播放是否停止。

TrackBar1:控制音量大小。

 

Form2:(播放列表窗體)

DataGridView1:記錄播放列表。分為兩列,分別記錄文件名與文件路徑。

Label1~4:播放列表的控制按鍵。

OpenFileDialog1:用於導入音樂文件。

Timer1~2:用於事件的監聽。

 

Form3:(“關於”顯示反饋方式及版本信息窗體)

Label1~7:用於文本顯示。

LinkLabel1:顯示制作者郵箱地址,可添加網絡鏈接。

PictureBox1:顯示播放器LOGO。

 

Form4:(桌面歌詞窗體)

Button1:單擊打開歌詞文件。

DataGridView1:導入歌詞。分為兩列,分別為歌詞標簽時間與歌詞。

Label1~2:顯示當前時間與歌詞。

OpenFileDialog1:歌詞文件。

Timer1~2:監聽事件。

 

      可能存在困難的部分,在博主看來也就只有播放列表的讀寫,下貼出部分源碼,可供大家借鑒學習一下。

播放列表導入(開啟時):

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        '開始階段列表導入
        If Dir("d:\bofangliebiao.xlsx", FileAttribute.Normal) <> "" Then
            Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()
            MyExcel.Visible = False
            MyExcel.Application.Workbooks.Open("d:\bofangliebiao.xlsx")
            Dim i As Integer = 1
            For i = 2 To MyExcel.Worksheets(1).usedrange.rows.count
                DataGridView1.Rows.Add(MyExcel.Worksheets(1).cells(i, 1).value, MyExcel.Cells(i, 2).value)
            Next i
            MyExcel.Workbooks.Close()
        End If

播放列表保存(關閉時):

 Private Sub Label6_Click(sender As Object, e As EventArgs) Handles Label6.Click
        '關閉按鍵()
        Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()
        MyExcel.Application.Workbooks.Add(True)
        MyExcel.Visible = False
        Dim m As Integer
        For m = 0 To Form2.DataGridView1.ColumnCount - 1
            MyExcel.Cells(1, m + 1) = Form2.DataGridView1.Columns(m).HeaderText
        Next m
        '往excel表里添加數據()
        Dim i As Integer
        For i = 0 To Form2.DataGridView1.RowCount - 2
            Dim j As Integer
            For j = 0 To Form2.DataGridView1.ColumnCount - 1
                If Form2.DataGridView1(j, i).Value Is System.DBNull.Value Then
                    MyExcel.Cells(i + 2, j + 1) = ""
                Else
                    MyExcel.Cells(i + 2, j + 1) = Form2.DataGridView1(j, i).Value.ToString
                End If
            Next j
        Next i
        If Dir("d:\bofangliebiao.xlsx", FileAttribute.Normal) <> "" Then
            Call Kill("d:\bofangliebiao.xlsx")
        End If
        MyExcel.ActiveWorkbook.SaveAs("d:\bofangliebiao.xlsx")
        MyExcel.Workbooks.Close()
        'Form2.表1TableAdapter.Fill(Form2.PlaylistDataSet.表1)
        'Form2.表1TableAdapter.Update(Form2.PlaylistDataSet)
        Me.Close()
    End Sub

      當然了歌詞同步也是很有難度的,博主在寫這部分的時候也遇到了挺多問題的,現在處理的話也是有些小bug的,就不貼出來了,有交流的可以私聊我。

 

     寫到這里了,秀一下博主的界面咯,這是當時寫在報告里的帶有功能介紹:

     最后,推薦一個工程打包(安裝包制作)軟件給各位吧:advanced installer 

     歡迎一同交流哈~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM