こんにちは、ボタンのクリックなどのイベントでサウンドを再生する wpf アプリケーションがあります。そして、私が今持っている現在のコードはサウンドファイルを再生しますが、たとえばユーザーが削除すると、アプリケーションがほとんど使用できなくなる別のフォルダーにある必要があることに気付きました。アプリケーションの Release ディレクトリにまったく新しいフォルダを作成せずに .wav ファイルを取得するにはどうすればよいでしょうか。何か案は?ありがとう。
質問する
782 次
2 に答える
0
.wav ファイルがプロジェクトのルートに追加され、コンテンツとしてマークされている場合 (.wav ファイルを右クリックしてプロパティをクリックし、ビルド アクションをコンテンツに変更します)、ルート出力フォルダーに直接コピーされます。
コードまたは XAML で wav ファイルを相対パス (単純な "Myfile.wav") として参照できます。
これがあなたが求めているものだと思いますか?
于 2012-05-18T05:45:52.697 に答える
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は、次のように設定する必要があります。
または、ディスクへの保存をやめて、ストリームを直接使用することもできます。
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 に答える