本文共 2438 字,大约阅读时间需要 8 分钟。
2.通过切割歌曲的路径,可以找到相同路径下歌词的文件(.lrc)
以下代码是1和2的整体代码
private void btnOpen_Click(object sender, EventArgs e) //打开按钮的功能 { //通过这个类我们打开文件 OpenFileDialog ofd = new OpenFileDialog(); //可以多选 ofd.Multiselect = true; //设置选择什么样的文件 ofd.Title = "请选择音乐文件"; //设置初始的目录 ofd.InitialDirectory = @"C:\Users\李晨璐\Music"; //设置显示文件的类型 ofd.Filter = "(*.mp3)|*.mp3"; //如果点了对话框的确定按钮 if(ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK) { //获取选中的所有的歌曲的路径 string[] fileNames = ofd.FileNames; for(int i=0;i
3. 将歌词文件中的内容进行切割成以下的格式
private ListFormatLrc() //切割歌词,歌词排序 { //定义一个集合用来存处理好的歌词 List list = new List (); //遍历存未切割好的歌词 for (int i = 0; i < listSongLrc.Count; i++) { //把每一句歌词都要切割 string[] lrc =listSongLrc[i].Split(new char[] { '[',']' }, StringSplitOptions.RemoveEmptyEntries); //判断切割好的内容的长度是否大于1看看这个时间后面是否有歌词 if(lrc.Length>1) { //如果大于1证明有时间也有歌词 for (int j = 0; j < lrc.Length-1; j++) { //把歌词和时间全部存到这个集合中去,不排除有好几段时间,分割好了, list.Add(lrc[j] + "|" + lrc[lrc.Length - 1]); } } }
4.根据“|”左边的时间和当前音乐播放时间判断,可以算出一句歌词需要在哪个时间段播放,在显示出相应的歌词,就可以了(“|”右边)
private void timer1_Tick(object sender, EventArgs e) //音乐播放时间,名称,显示歌词 { //判断歌名是否为空 if (axWindowsMediaPlayer1.currentMedia != null) { //显示音乐播放时间 labTime.Text = axWindowsMediaPlayer1.Ctlcontrols.currentPositionString; //显示音乐播放名称 labMusicName.Text = axWindowsMediaPlayer1.currentMedia.name; //显示歌词 //上一句歌词播放时间 当前歌曲播放时间 下一句歌词播放的时间 //(有歌词) if (listSongLrc.Count>0&&axWindowsMediaPlayer1.currentMedia!=null) { //获得当前歌曲播放的时间 string time = axWindowsMediaPlayer1.Ctlcontrols.currentPositionString; //遍历歌词 for (int i = 0; i < listSongLrc.Count-1; i++) { //上一句歌词播放时间
以上就是基本的逻辑和代码展示
转载地址:http://hhtf.baihongyu.com/