推薦到一個人的百度空間里去看,
鄂倫春網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
里面有DirectSound的教程
還有DirectInput、DirectDraw的教程
但是DirectSound只能播放wav
如果想播放像mp3、ogg之類的音樂,你可以使用AudioVideoPlayback
思路很簡單可以定義一個結(jié)構(gòu)LyricStructure Lyric
Dim Time As Single
Dim Content As String
End Structure聲明一個列表 Private Lyrics As New List(Of Lyric)然后以文本方式把歌詞文件讀入一個變量 并對它進行分析 分別把時間和歌詞內(nèi)容存入一個Lyric,并加入Lyrics中。代碼如下:(假設(shè)歌曲文件的路徑為path)Dim LrcPath As String== IO.Path.GetDirectoryName(cPath) "/" IO.Path.GetFileNameWithoutExtension(cPath) ".lrc"If IO.File.Exists(LrcPath= True Then AnalysisLyric() Private Sub AnalysisLyric()
Lyrics.Clear() '先清空列表
Dim tm As Byte
Dim sr As New IO.StreamReader(LrcPath, System.Text.Encoding.Default) '讀取歌詞文件
Do While sr.EndOfStream = False '判斷是否處于文件流末尾
Dim tmpStr As String = sr.ReadLine '讀取一行
If tmpStr.Length 5 Then Continue Do '長度小于5則跳過,進行下一次循環(huán)
Select Case Mid(tmpStr, 2, 2) '判斷第2-3個字符 因為歌詞里的注釋都是[ti:***]類似的結(jié)構(gòu)
Case "ti"
lTitle = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "ar"
lArtist = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "al"
lAlbum = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "by"
lAuthor = Mid(tmpStr, 5, tmpStr.Length - 5)
Case Else '如果不為以上的內(nèi)容 則為歌詞正文,進行以下操作
If Not Mid(tmpStr, 1, 6) Like "?##:##" Then Continue Do
Dim time(-1) As String '因為有時歌詞是以[00:00.00][00:00.00]**** 這樣歌詞把多個時間存放在一起的 ,所以定義一個數(shù)組來存放歌詞
Do '因為不確定時間的個數(shù),所以此處必須循環(huán)判斷
tm = InStr(tmpStr, "]") '因為歌詞時間有時是[00:00.00]形式,有時是[00:00]形式,所以不能單純的截取第幾個字符 ,我是根據(jù)查找']'字符來進行判斷的
ReDim Preserve time(time.GetUpperBound(0) + 1) 為time數(shù)組重新分配大小
time(time.GetUpperBound(0)) = Mid(tmpStr, 1, tm) 'time.GetUpperBound(0)返回數(shù)組的第一維的最大下標
tmpStr = IIf(tmpStr.Length = tm, " ", Mid(tmpStr, tm + 1)) '歌詞內(nèi)容
Loop While Mid(tmpStr, 1, 6) Like "?##:##" '如果截取剩下的部分依然匹配的話繼續(xù)循環(huán)
For Each t In time '為每個時間都創(chuàng)建一個Lyric變量
Dim ln As Lyric
ln.Time = SwitchTime(Mid(t, 2, t.Length - 2))
ln.Content = tmpStr
Lyrics.Add(ln)
Next
End Select
Loop
sr.Close() 關(guān)閉流
Sort() '把所有Lyric按時間順序排序
End Sub Private Function SwitchTime(ByVal time As String) As Single ‘這個函數(shù)是用來把00:00.00格式的時間轉(zhuǎn)化成以秒數(shù)顯示的數(shù)值
Dim tm As Single
Dim minute As Single = Val(Mid(time, 1, 2))
Dim second As Single = Val(Mid(time, 4, 5))
tm = minute * 60 + second
Return tm
End Function Private Sub Sort()
For i = 0 To Lyrics.Count - 2
For j = i To Lyrics.Count - 1
If Lyrics(i).Time Lyrics(j).Time Then
Dim tm As Lyric = Lyrics(i)
Lyrics(i) = Lyrics(j)
Lyrics(j) = tm
End If
Next
Next
End Sub 接下來是顯示歌詞的問題了 ,只要有每句歌詞和對應(yīng)的時間,那么問題就好辦了。你可以用Windows Media Player控件返回的時間和每句歌詞的時間做比較,來判斷應(yīng)該顯示那一句。代碼是很久前寫的 ,那時沒加注釋,都是剛剛加上去的喲,你可以根據(jù)你的實際情況自己修改,有什么不懂的地方可以繼續(xù)問我哈~~
詳細查看了你的問題,完全不需要使用線程sleep的方法。
在這邊,我要給你引入一個概念。就是Form窗體的兩個方法。
Form.Show()和Form.ShowDialog()
第一個Show方法運行后,你的主程序還是會進行,你的代碼還是會繼續(xù)進行下去。此時,窗體還是彈出的。
第二個ShowDialog方法運行后,此時,彈出的一個窗體,你不將其關(guān)閉,那么,主程序就會一直等待這個窗體關(guān)閉后,才執(zhí)行后面的代碼。
所以,你只需要使用showdialog這個方法,即可達到你想要的結(jié)果。
那么,如何才能讓彈出的窗體不改變呢?很簡單
你可以找到窗體的formcloseing事件,在這個事件中,有一個參數(shù):e
這個e有一個屬性,就是e.handle,表示是否處理過這個事件了。
這個時候,如果你不想讓窗體關(guān)閉,你可以寫:
e.handle=true,那么表示已經(jīng)處理過窗體關(guān)閉的事件了。
注:有些情況,可能是:e.cancel=true
'在窗體上添加一個按鈕測試
Private
m_PlayFlag
As
Boolean
=
False
'是否正在播放
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
m_PlayFlag
=
False
Then
Button1.Image
=
Image.FromFile("d:\play.jpg")
'更換為播放圖標
m_PlayFlag
=
True
'改變標志
Else
Button1.Image
=
Image.FromFile("d:\pause.jpg")
'更換為暫停圖標
m_PlayFlag
=
False
'改變標志
End
If
End
Sub
Private
Sub
Form1_Load(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
MyBase.Load
'窗體加載時使用暫停圖標
Button1.Image
=
Image.FromFile("d:\pause.jpg")
End
Sub
在.NET里,沒有托管的音樂播放器,用API只能播放WAV格式,對于MP3等形式的音頻文件,就要依賴于其他控件了,常用的就是
MediaPlayer。使用方法:
在工具箱上點右鍵,選擇“選擇項目(Choose
Items)”,切到COM選項卡,找到
Windows
Media
Player,
勾選,確定
在t工具箱上,把剛才加入的MediaPlayer控件,拖放到窗體上
代碼:
WindowsMediaPlayer1.URL
=
"mp3文件路徑,支持網(wǎng)絡(luò)路徑"
WindowsMediaPlayer1.Ctlcontrols.play
基本就OK了,至于其他的操作諸如下一曲上一曲暫停停止,直接看
WindowsMediaPlayer1.Ctlcontrols.
里面的方法吧。
網(wǎng)站標題:vb.net暫停音樂 vbs播放音樂
瀏覽路徑:http://aaarwkj.com/article14/dooohge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、動態(tài)網(wǎng)站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)