大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 网络媒体 -> MEDIAPLAYER -> C#中利用mediaplayer打造mp3播放器

C#中利用mediaplayer打造mp3播放器

时间: 2021-07-31 作者:daque

运用window media player 控件本人做一款玲珑的mp3播放器来听音乐 ,是否很享用呢?即日刚写出来的,听听mp3发觉还不错哦。 谈天少说,加入正题。     mp3播放器重要实行下列功效:    1. 增添歌曲,不妨增添单个乐曲大概指定文献夹内囊括其子文献夹内的一切mp3乐曲到播放列表。       2. 简略指定歌曲或一切歌曲。    3. 播放的遏制。囊括采用上一首,下一首播放,程序播放,轮回播放和随机播放。轮回播放又分单个歌曲的轮回播放和一切歌曲的轮回播放。    开始创造类player。  public class player  {    private axwmplib.axwindowsmediaplayer myplayer;    private string[] playlist;    private int numofmusic;    private int currentplay;    public int numofmusic    {     get     {      return numofmusic;     }    }    public wmplib.wmpplaystate playstate    {     get     {      return myplayer.playstate;     }    }    public string playlist(int num)    {     return playlist[num];    }    public player(axwmplib.axwindowsmediaplayer mediaplayer)    {     myplayer = mediaplayer;     playlist = new string[1000];     numofmusic = 0;    }    public void addfile(string path)    {     if(numofmusic < 1000)     {      numofmusic ++;      playlist[numofmusic] = path;     }    }    public void delfile(int selectnum)    {     for(int i = selectnum; i <= numofmusic - 1; i++)     {      playlist[i] = playlist[i + 1];     }     numofmusic --;    }    public void play(int selectnum)    {     myplayer.url = playlist[selectnum];     currentplay = selectnum;    }    public int nextplay(int type)    {     /* type = 0 程序     type = 1 反复播放十足     type = 2 反复播放一首     type = 3 随机播放     */     switch (type)     {      case 0:       currentplay ++;       if(currentplay > numofmusic)return 0;       else return currentplay;      case 1:       currentplay ++;       if(currentplay > numofmusic) return 1;       else return currentplay;      case 2:       return currentplay;      case 3:       random rdm = new random(unchecked((int)datetime.now.ticks));        currentplay = rdm.next() % numofmusic;       if(currentplay == 0) return numofmusic;       else return currentplay;      default:       return 0;     }     }   }     player类中囊括一个windowsmediaplayer东西myplayer,一个保存播放列表的数组playlist,记载歌曲总额的numofmusic,以及暂时播放的歌曲对应列表中的序号currentplay; 其余有四个本领辨别是play,addfile,delfile,以及赢得下次播放序号的nextplay    分功效列出其余重要代码    增添单个歌曲  if(this.openfiledialog1.showdialog() == dialogresult.ok)  {    string path = this.openfiledialog1.filename;    fileinfo f = new fileinfo(path);    myplayer.addfile(f.fullname);    string strfile = convert.tostring(myplayer.numofmusic);    for(int i = 1;i<=5-strfile.length;i++)strfile+=’ ’;    strfile += f.name;    this.listbox1.items.add(strfile);  }    增添一个文献夹及其一切子文献夹的歌曲    运用递归因变量showfiles实行一切层歌曲都增添到歌曲列表中。  private void showfiles(string path,listbox listbox1)  {    directoryinfo dir = new directoryinfo(path);    foreach(fileinfo f in dir.getfiles("*.mp3"))    {     myplayer.addfile(f.fullname);    }    foreach(directoryinfo f in dir.getdirectories())    {     showfiles(f.fullname,listbox1);    }    简略和清空径直挪用类player中的addfile和delfile因变量    实行播放上一首  if(listbox1.selectedindex >= 0)  {     listbox1.selectedindex --;    if(listbox1.selectedindex <0)listbox1.selectedindex = myplayer.numofmusic - 1;    myplayer.play(listbox1.selectedindex + 1);  }    下一首  if(listbox1.selectedindex >= 0)  {    listbox1.selectedindex = (listbox1.selectedindex + 1) % myplayer.numofmusic;    myplayer.play(listbox1.selectedindex + 1);  }    播放的遏制    运用player的nextplay本领归来的值来采用下一次播放的实质。    同声运用playstatechange事变来实行由一曲到下一曲的替代,然而在相应playstatechange事变的功夫径直变换player的url没辙让它径直播放下一曲,处置本领如次:  private void axwindowsmediaplayer1_playstatechange(object sender, axwmplib._wmpocxevents_playstatechangeevent e)  {    if(myplayer.playstate == wmplib.wmpplaystate.wmppsmediaended)    {     timer1.start();    }  }  private void timer1_tick(object sender, system.eventargs e)  {    timer1.stop();    int selectnum = 0;    if(menuitem13.checked)selectnum = myplayer.nextplay(0);    else if (menuitem15.checked)selectnum = myplayer.nextplay(1);    else if (menuitem16.checked)selectnum = myplayer.nextplay(2);    else if (menuitem17.checked)selectnum = myplayer.nextplay(3);    if(selectnum != 0)    {     listbox1.selectedindex = selectnum - 1;      myplayer.play(selectnum);    }  }    满意一首歌曲中断的前提的功夫叫醒计时器,计时器100ms内就相应因变量timer1_tick,在这个因变量里实行下一首歌曲的采用播放便不妨成功举行. 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.