嗨,我有一个 wpf 应用程序,可以在按钮单击等事件上播放声音。我现在拥有的当前代码播放声音文件,但我意识到它必须位于另一个文件夹中,例如如果用户删除,则应用程序几乎无法使用。我想知道,如果不在应用程序发布目录中创建一个全新的文件夹,我怎么能得到一个 .wav 文件。有任何想法吗?谢谢。
问问题
782 次
2 回答
0
将 .wav 文件作为嵌入式资源放入 dll 怎么样?
只需将文件添加到项目中,右键单击文件并将Build Action设置为Embedded Resource。
然后您可以将 .wav 文件作为流加载并将其保存到光盘,如下所示:
private void WriteEmbeddedResourceToFile(string writePath, string assemblyName)
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream(assemblyName);
if (s != null)
{
var file = new byte[s.Length];
s.Read(file, 0, (int)s.Length);
File.WriteAllBytes(writePath, file);
s.Close();
}
}
字符串assemblyName必须像这样设置:命名空间。(如果您将文件放在文件夹中,请在此处插入文件夹子路径).filename.wav
或者,您可以将其保存到光盘,直接使用流:
private byte[] GetEmbeddedResource(string assemblyName)
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream(assemblyName);
if (s != null)
{
var file = new byte[s.Length];
s.Read(file, 0, (int)s.Length);
s.Close();
return file;
}
}
然后,当您要加载文件时,GetEmbeddedResource 将返回字节数组。
于 2012-05-18T05:54:08.547 回答
0
如果将 .wav 文件添加到项目的根目录,然后标记为内容(右键单击 .wav 文件并单击属性。然后将构建操作更改为内容),那么它将直接复制到根输出文件夹
您可以在代码或 XAML 中引用 wav 文件作为相对路径(简单的“Myfile.wav”)
我相信这就是你的要求?
于 2012-05-18T05:45:52.697 回答