Windows Forms程序中嵌入并播放Wave音频文件

    前言

    本文介绍了将Wave音频文件嵌入程序并使用System.Media命名空间中的类进行播放的一种方法,受益于System.Media类库,本文中的示例无须引用”winmm.dll”来播放音频文件,所以这个方法实现起来只需要更少的代码。

    示例中使用的音频文件作为资源嵌入到了程序中,这样在安装程序时就不再需要将外部的Wave文件一起打包了,同时这种方法也排除了在安装程序后音频文件被移除或替换的潜在可能。

    开始

    示例程序是下面这样一个简单的窗体: 
    

    解决方案资源管理器的示意图则是这样的: 
    
    
    解决方案中只有一个项目:EmbeddingWavFiles。WavFiles文件夹中的两个wave文件是嵌入到资源文件的音频文件,它们不会随主程序一起打包,一旦嵌入资源文件,程序就可以不依赖它们了。

    将音频文件添加到资源文件的方法

    要将音频文件添加到解决方案,先在解决方案资源管理器中打开Resources.resx文件,这时你会看到一个下拉列表:
    
    
    这里选择Audio(音频)类型,然后点击它右边的”Add Resource”,这时会打开一个文件浏览器,在这里选择要添加的资源(此处只能选择wav类型的文件)。

    将音频文件添加到资源文件后,选择其中的每一项,按F4打开该项的属性窗口,将Persistence属性设置为” Embedded in .resx”:
    
    
    此时编译程序,会看到” Resources.resx”文件较之开始体积大了不少。

    至此,文件已经添加完毕,并得到了正确的设置,现在就可以在项目内使用它们了。

    播放Wave文件的代码:

    1、添加命名空间:System.Media; 

    2、添加播放文件的代码:
    播放文件一次:

     try
    {
        SoundPlayer player 
=   new
            SoundPlayer(EmbeddingWavFiles.Properties.Resources.sound);
        player.Play();
    }
    
catch  (Exception ex)
    {
        MessageBox.Show(ex.Message 
+   " "   +  ex.StackTrace,  " Error " );
    }

    这里使用添加的资源来建立一个SoundPlayer类的实例,然后调用它的Play方法播放文件一次。

    循环播放:
     try
    {
        SoundPlayer player 
=   new
            SoundPlayer(EmbeddingWavFiles.Properties.Resources.sound2);

        
if  (btnLoopPlay.Text  ==  ( " 播放 " ))
        {
            player.PlayLooping();
            btnLoopPlay.Text 
=   " 停止 " ;
        }
        
else
        {
            player.Stop();
            btnLoopPlay.Text 
=   " 播放 " ;
        }
    }
    
catch  (Exception ex)
    {
        MessageBox.Show(ex.Message 
+   " "   +  ex.StackTrace,  " Error " );
    }
   
    这里调用PlayLooping方法循环播放文件,可以调用Stop方法停止播放。

    示例中在建立SoundPlayer的实例时,构造函数的参数类型是System.IO.UnmanagedMemoryStream,除此之外,重载的构造函数还接受字符串,该字符串表示要加载的wave文件的位置。

    总结

    这个示例演示了如何将音频文件嵌入到应用程序的资源文件并播放它们,这要用到System.Media类库。类似的功能也可通过引用”winmm.dll”来实现,但本文的方法需要的代码更少,从部署的角度来说也更为安全。 

                                                                                                       By Anders 

    参考原文: http://www.c-sharpcorner.com/UploadFile/scottlysle/embedwavs01072007051701AM/embedwavs.aspx  
    

    示例下载:PlayWaveFiles.rar


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2007/01/23/embeddingwavfilesinwinform.html,如需转载请自行联系原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值