c# - 在 WPF 中作为资源播放声音

标签 c# wpf audio resources

这个问题在这里已经有了答案:





How to play a WPF Sound File resource

(4 个回答)


7年前关闭。




首先,我搜索了网站并查看了 this但不幸的是,它对我没有多大帮助。

每当我单击我制作的 Frog 图像时,我想播放一个 .wav 文件作为资源。这是我的代码:

void newFrog_MouseUp(object sender, MouseButtonEventArgs e)
{
    System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"G:\COSR3S\FrogsAndLilyPads\FrogsAndLilyPads\Sounds\FrogCroak.wav");
    player.Play();
}

当然这有效,但我的问题是计算机之间的目录更改,所以我认为我必须将其作为资源播放。我不知道该怎么做。我是一个相当新的程序员,请记住。

我在前面提到的 link 的基础上尝试了一些变体并玩弄它。例子:
void newFrog_MouseUp(object sender, MouseButtonEventArgs e)
{
    Uri uri = new Uri(@"pack://application:,,,/Sounds/FrogCroak.wav");
    var player = new MediaPlayer();
    player.Open(uri);
    player.Play();
}

我也尝试过这样做,虽然我认为这个行不通,但我还是尝试了:
void newFrog_MouseUp(object sender, MouseButtonEventArgs e)
{
    Uri uri = new Uri(@"pack://application:,,,/Sounds/FrogCroak.wav");
    System.Media.SoundPlayer player = new System.Media.SoundPlayer(uri);
    player.Play();
}

我不确定“pack://application:,,,”是否是指正在播放的文件。

我也试着让它好像是一个图像,像这样:
void newFrog_MouseUp(object sender, MouseButtonEventArgs e)
{
    System.Media.SoundPlayer player = new System.Media.SoundPlayer(new Uri(@"pack://application:,,,/Sounds/FrogCroak.wav", UriKind.RelativeOrAbsolute));
    player.Play();
}

所以而不是new BitmapImage我做了new System.Media.SoundPlayer只是发现它不会那样工作。

编辑:我忘了提到这有效,但它没有播放任何声音。
void newFrog_MouseUp(object sender, MouseButtonEventArgs e)
{
    Uri uri = new Uri(@"pack://application:,,,/Sounds/FrogCroak.wav");
    var player = new MediaPlayer();
    player.Open(uri);
    player.Play();
}

Edit2:从技术上讲,可能的重复并没有解决我的问题,但根据接受的答案,这是不可能的。有没有其他方法可以使用不同的方法播放音频?

最佳答案

这适用于我使用带有命令行应用程序的 Visual Studio 2013:

  • 将 .wav 文件作为资源 (Resources.resx) 嵌入到项目中
  • 我使用了从现有文件中添加资源
  • 将文件的持久性设置为“在编译时链接”
  • 使用类似这样的代码从代码中引用文件。 Timer 是这段代码的命名空间,而 NotificationSound 就是我所说的嵌入声音:
    var notificationSound = new SoundPlayer(Timer.Properties.Resources.NotificationSound);
    notificationSound.PlaySync();
    

  • 这允许我在移动可执行文件并重命名原始声音文件后从应用程序播放声音(只是为了检查它是否实际嵌入)。

    关于c# - 在 WPF 中作为资源播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552373/

    相关文章:

    wpf - 如何在按钮按下时绑定(bind)命令(wpf/mvvm)?

    java - LIBGDX - 创建音乐时出错

    vb.net - 播放wav文件并在VB.Net中即时更改共振峰

    c# - 在 C# 中使用 Linq 选择 DataRow

    C# 和 VB.Net 对同一个方程给出不同的结果

    c# - Unity EditorWindow - 在屏幕 View 中找到鼠标位置

    javascript - 解锁网络音频的最佳解决方案

    c# - EF AssociationSet 处于已删除状态错误

    c# - 导航 MVVM

    c# - 给定一个 WPF Image 控件,是否可以确定它的 HWND?