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

C# 在WPF中作为资源播放声音,c#,wpf,audio,resources,C#,Wpf,Audio,Resources,首先,我搜索了这个网站并查看了它,但不幸的是,它对我帮助不大 每当我点击我制作的青蛙图像时,我都想播放一个.wav文件作为资源。这是我的密码: void newFrog_MouseUp(object sender, MouseButtonEventArgs e) { System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"G:\COSR3S\FrogsAndLilyPads\FrogsAndLilyPads\Sou

首先,我搜索了这个网站并查看了它,但不幸的是,它对我帮助不大

每当我点击我制作的青蛙图像时,我都想播放一个.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();
}
当然,这是可行的,但我的问题是目录在不同的计算机之间变化,所以我想我必须把它作为一种资源来使用。我不知道怎么做。我是一个相当新的程序员,只是要记住

我尝试了一些基于上述内容的变体,并对其进行了尝试。示例:

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();
}
因此,我没有使用新的位图图像,而是使用了新的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();
    

这使我能够在移动可执行文件并重命名原始声音文件后播放应用程序中的声音(只是为了检查它是否已嵌入)。

我很感谢您的回答,但这在Visual Studio 2010中是否有效,因为我的学校正在使用该版本。我没有Visual Studio 2010可供测试,但我看不出有任何理由不起作用。说明可能有点不同。