windows程序设计作业

1.作业内容

请编写一个C#程序,实现音乐文件的播放功能。

要求1:

1. 程序应能够读取MP3文件,并播放其中的音频。

2. 程序应能够处理可能出现的异常,如文件不存在、文件读取错误等。

3. 程序应具有良好的用户界面,方便用户进行操作。

4. 程序应具有良好的兼容性,能在不同版本的C#中正常运行。

提示:此功能可以使用WindowsMediaPlayer控件

要求2:

1. 程序应能够播放ogg文件。

2. 程序应能够处理可能出现的异常,如文件不存在、文件读取错误等。

3. 程序应具有良好的用户界面,方便用户进行操作。

4. 程序应具有良好的兼容性,能在不同版本的C#中正常运行。

提示:此功能可以使用Nuget程序包中的Naudi.Vorbis控件

2.设计思路

(1)使用C#当中的控件来组成播放器,button可以用来选择歌曲,停止播放,下一首,listbox可以作为音乐列表,trackbar用来调节音量,

3.代码实现

(1)首先需要安装Nuget包中的NAudio和Naudio.vorbis

(2)程序支持的文件格式(mp3,wav,flac,ogg)

private readonly string[] supportedExtensions = { ".mp3", ".wav", ".flac", ".ogg" };

(3)浏览文件

// 浏览文件
private void BrowseFiles()
{
     // 设置文件对话框的过滤器
     openFileDialog1.Filter = "选择音频|*.mp3;*.wav;*.flac;*.ogg";
     // 允许多选
     openFileDialog1.Multiselect = true;

     // 如果用户选择了文件
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         // 清空列表框
         listBox1.Items.Clear();
         // 将选择的文件添加到列表框中
         foreach (var file in openFileDialog1.FileNames)
         {
             listBox1.Items.Add(file);
         }
     }
 }

(4)播放音乐(程序运行时,需要点击歌曲列表中的歌曲)

 // 播放音乐
 private void PlayMusic(string filename)
 {
     // 获取文件扩展名
     string extension = Path.GetExtension(filename);
     // 如果是Ogg文件
     if (extension == ".ogg")
     {
         // 播放Ogg文件
         PlayOggFile(filename);
     }
     else
     {
         // 使用Windows Media Player播放其他格式的音乐文件
         axWindowsMediaPlayer1.URL = filename;
         axWindowsMediaPlayer1.Ctlcontrols.play();
         // 显示正在播放的歌曲名
         label1.Text = Path.GetFileNameWithoutExtension(filename);
     }
 }

(5)播放.ogg文件

// 播放Ogg文件
private void PlayOggFile(string oggFilePath)
{
    // 使用NAudio解码和播放Ogg文件
    using (var vorbisReader = new VorbisWaveReader(oggFilePath))
    {
        using (var outputDevice = new WaveOutEvent())
        {
            outputDevice.Init(vorbisReader);
            outputDevice.Play();
            // 等待播放完毕
            while (outputDevice.PlaybackState == PlaybackState.Playing)
            {
                System.Threading.Thread.Sleep(1000);
            }
        }
    }
}

(6)添加歌曲

// 添加歌曲
private void button1_Click(object sender, EventArgs e)
{
    // 打开文件对话框,选择音频文件
    BrowseFiles();
}

 (7)调整音量

        // 音量滑动条滚动
        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            // 调整音量大小
            axWindowsMediaPlayer1.settings.volume = trackBar1.Value;
            // 更新音量显示标签
            label2.Text = trackBar1.Value + "%";
        }

(8)停止播放

// 停止播放
private void button2_Click(object sender, EventArgs e)
{
    // 停止播放音乐
    axWindowsMediaPlayer1.Ctlcontrols.stop();
}

(9)下一首

// 下一首
private void button3_Click(object sender, EventArgs e)
{
    // 如果列表框中有音乐文件
    if (listBox1.Items.Count > 0)
    {
        // 计算下一个音乐文件的索引
        int nextIndex = (listBox1.SelectedIndex + 1) % listBox1.Items.Count;
        // 设置列表框选中下一个音乐文件
        listBox1.SelectedIndex = nextIndex;
    }
}

4.作业关键

本次作业需要熟练运用控件,

5.完整代码

work_of_work/Form1.cs at main · cpeng5993/work_of_work (github.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值