好的,我是一个菜鸟,已经在Google上花了4个小时。所以我真的很感激一些帮助。我尝试用变量播放声音(获得100多个声音)我已经完成了本教程中的所有内容: http://www.codeproject.com/Articles/17422/Embedding-and-Playing-WAV-Audio-Files-in-a-WinForm
这有效:
System.Media.SoundPlayer soundPlayer = new System.Media.SoundPlayer
(PROGRAM.Properties.Resources.audio);
soundPlayer.Play();
这不起作用:
string file = "PROGRAM.Properties.Resources.audio";
System.Media.SoundPlayer soundPlayer = new System.Media.SoundPlayer
(file);
soundPlayer.Play();
错误:请确保指定位置存在声音文件... System.Media:SoundPlayer.ValidateSoundFile(StringfileName)
字符串怎么可能不起作用?
答案 0 :(得分:1)
当您在第一个示例中使用PROGRAM.Properties.Resources.audio
时,您实际上获得了对流的引用(它为您提供了嵌入的音频数据)。这是由.resx生成的自动生成的代码管理的。
当您将"PROGRAM.Properties.Resources.audio"
作为字符串传递时,SoundPlayer会将其解释为文件名,然后显然无法找到它。
如果要手动从资源文件中获取音频流,请尝试:
var stream = PROGRAM.Properties.Resources.ResourceManager.GetStream( "audio" );
var soundPlayer = new System.Media.SoundPlayer( stream );
soundPlayer.Play();