此文主要基于C#制作音乐播放器,可实现导入本地歌曲、音乐播放、音量设置、歌词显示等。

  • 实现流程
    • 1.1、创建项目
    • 1.2、准备素材
    • 1.3、功能开发

实现流程

1.1、创建项目

  1. 打开Visual Studio,右侧选择创建新项目。

  1. 搜索框输入winform,选择windows窗体应用,填写对应的保存路径点击下一步,创建成功后如下图。


  1. 将Form1的FormBorderStyle属性设置为None,这时窗体效果则由下图1变成了图2的样子。

1.2、准备素材

需要准备一些平常喜欢听的歌曲,mp3格式的就行,如果需要歌词展示的话还需要准备lrc格式的文件。

1.3、功能开发

在工具箱拖拽出一个listview控件,用于歌曲列表的展示,序号跟歌名两列通过columnHeader属性设置。

添加一个button按钮控件,实现添加歌曲的功能。

实现一个自定义函数,将用户选择的歌曲填充到listview中。

 public void addLocalSong(string[] files){XmlDocument xd = new XmlDocument();xd.Load(Directory.GetCurrentDirectory() + "\\data\\" + "music.xml");XmlElement xe = xd.DocumentElement;int i = xe.ChildNodes.Count;foreach (string str in files){i++;XmlNode x = xd.CreateElement("path");x.InnerText = str;xe.AppendChild(x);string[] t = { i.ToString(), Path.GetFileNameWithoutExtension(str) };ListViewItem lvi = new ListViewItem(t);this.listView1.Items.Add(lvi);}xd.Save(Directory.GetCurrentDirectory() + "\\data\\" + "music.xml");}

双击上传歌曲的button控件,调用上面所定义的函数,这里需要限制用户选择文件的后缀为mp3格式。

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "音乐|*.mp3";
ofd.Multiselect = true;
ofd.Title = "本地歌曲添加";DialogResult dr = ofd.ShowDialog();
if (dr == DialogResult.OK)
{addLocalSong(ofd.FileNames);
}

再拖拽几个button按钮到窗体上来,修改其text显示的同时给播放按钮增加点击事件。

         /// <summary>/// 播放或暂停歌曲/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){if (this.now_music_id == -1)return;if (this.button2.Text == "播放" && this.trackBar1.Value < (this.trackBar1.Maximum - 2)){this.timer1.Enabled = true;this.Mp3Player.Ctlcontrols.play();this.button2.Text = "暂停";}else if (this.button2.Text == "播放" && this.trackBar1.Value >= (this.trackBar1.Maximum - 2)){this.timer1.Enabled = true;this.button2.Text = "暂停";this.PlayModeChange();}else {this.timer1.Enabled = false;this.Mp3Player.Ctlcontrols.pause();               this.button2.Text = "播放";      }}

给listview也增加事件,实现双击播放歌曲的效果。

             if (this.listView1.SelectedItems.Count == 0)return;this.button2.Text = "暂停";this.timer1.Enabled = true;ListViewItem lvi = this.listView1.SelectedItems[0];//MessageBox.Show("双击");this.label3.Text = this.listView1.SelectedItems[0].SubItems[1].Text;this.label3.Text = lvi.SubItems[1].Text;if (this.label3.Text.Length > 15)this.label3.Text = this.label3.Text.Substring(0, 13) + "..";this.label3.Location = new Point((int)(this.panel1.Width / 2 - this.label3.Width / 2), this.label3.Location.Y);this.now_music_id = Convert.ToInt32(lvi.SubItems[0].Text) - 1;XmlDocument xd = new XmlDocument();xd.Load(Directory.GetCurrentDirectory() + "\\data\\" + "music.xml");string filename = xd.DocumentElement.ChildNodes[this.now_music_id].InnerText;this.musicPlay(filename);string lrc_filename = Path.GetDirectoryName(filename) + "\\" + Path.GetFileNameWithoutExtension(filename) + ".lrc";if (File.Exists(lrc_filename)){loadLrc(lrc_filename);    }else{this.richTextBox1.Text = "歌词文件不存在";}

界面左侧拖拽一个richTextBox,用于歌词的展示。

在播放按钮以及listview双击事件中都调用一个加载歌词的自定义函数,使用FileStream时需要配置utf-8的格式,否则歌词可能会乱码。

在窗体底部增加一个trackBar控件,用于歌曲进度条的控制。

实现歌曲进度条滚动变化事件处理的函数。

     if (this.now_music_id == -1)return;this.Mp3Player.Ctlcontrols.currentPosition = this.trackBar1.Value;this.label1.Text = this.Mp3Player.Ctlcontrols.currentPositionString;if (this.trackBar1.Value >= (this.trackBar1.Maximum - 2) && this.button2.Text == "暂停"){this.PlayModeChange();}

定义一个透明窗体,用于歌词显示。

再次增加一个trackbar控件,用于控制音量。

private void trackBar2_Scroll(object sender, EventArgs e)
{if (this.now_music_id == -1)return;this.Mp3Player.settings.volume = this.trackBar2.Value;
}

有兴趣的可以在此基础上进行一些功能完善,例如增加一些歌曲循环或随机播放等。

基于C#制作一个音乐播放器相关推荐

  1. 使用小程序制作一个音乐播放器

    此文主要通过小程序制作一个音乐播放器,实现轮播.搜索.播放.快进.暂停.上一曲.下一曲等功能. 一.创建小程序 二.设计页面 三.接口渲染 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序 ...

  2. 基于React开发一个音乐播放器

    同时支持 Mac 与 Windows 系统. 下载地址 掘金链接 项目使用 electron 作为外壳,webpack 作为打包工具,核心技术包括 React + Redux + React-rout ...

  3. 23|VS2017 基于MFC 做一个音乐播放器,带音量调节,切换歌曲

    最近接到个小任务,用MFC做一个音乐播放器,不过这也是一直想尝试的,于是今天早上9点到下午16:00,总算是完成了需要的功能 开门见山,先展示一下整体界面 下面按照功能模块介绍我做这个播放器的过程 预 ...

  4. 基于STM32制作的音乐播放器,用PWM控制蜂鸣器

    目录 效果展示 前言 一.设计背景 1.1.知识储备 二.系统设计方案 2.1.实现功能 2.2.硬件部分 2.3.软件部分 三.软件设计 3.1.设计流程图 3.2.音乐频率的设置 3.3.编程主要 ...

  5. ssRender引擎 制作一个音乐播放器

    效果 操作流程 创建节点设置属性 节点名称 节点数量 Layer 1 Item 10 SeqImage 1 Button 7 节点名称 Preview显示情况 bg 绿色长方形背景图 ZZ1.ZZ2. ...

  6. 【51单片机学习笔记】基于STC11F04E的蜂鸣器音乐播放器

    微型播放器                                     --基于STC11F04E的蜂鸣器控制 青岛科技大学 信息科学技术学院 集成162 Listen C 一.简介 1. ...

  7. (附源码)springboot+基于微信小程序音乐播放器的设计与实现 毕业设计271156

    Springboot音乐播放小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的音乐播放器,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐库推荐.交流论坛.注册登录.最 ...

  8. 基于FPGA设计的音乐播放器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 基于FPGA设计的音乐播放器 一.生成PCM音频格式的音乐文件 1.PCM音频文件格式 2.Matlab读取WAV文件 二. ...

  9. 基于Android的手机音乐播放器的设计与实现

    源码及论文下载:http://www.byamd.xyz/tag/android/ 摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活 ...

最新文章

  1. 嵌入式开发入门(2)
  2. antd 侧边栏如何自适应高度
  3. 串口 COM口 USB-TTL RS-232 RS-485 不同标准 区别 释疑
  4. 搭建docker私有仓库
  5. MySQL5.6 Waiting for Commit Lock
  6. mysql select 反选_JQuery实现全选、全不选和反选功能
  7. 计算机网络----wireshark抓包
  8. 工具杂记-notepad++正则表达式匹配替换
  9. srsLTE源码学习:网络附属存储抓包nas_pcap.h
  10. R语言︱情感分析—词典型代码实践(最基础)(一)
  11. 编程之美 1.4买书问题常数时间空间解法
  12. 解压文件--linux
  13. c语言简单系统实例,简单的c语言编程实例
  14. 云课堂智慧职教计算机作业答案,云课堂智慧职教毛概作业答案
  15. 水星路由器DNS服务器未响应,为什么新版水星路由器不能上网
  16. CANoe.Diva之cdd文件配置
  17. 打游戏经常有人喷,刷个B站还是有?Python实现在网站上自动评论!键盘侠都喷不赢你!
  18. Aria2使用详细教程
  19. 语音(识别)处理教程
  20. 将文件保存到fpga

热门文章

  1. HDOJ1495 非常可乐(bfs)
  2. Linux uptime 命令(75)
  3. MySQL常用操作总结
  4. 跳槽or裸辞?2022年真不建议···
  5. Win10你要以何方式打开此网站 确定不能点解决方法
  6. 《计算机系统基础》—— 运算
  7. 解决json数据 key为数字,自动排序问题
  8. css清除浮动的四种方法(详细)
  9. MouseManager
  10. Fabric单机多节点网络部署方案