声音播放器可调音量

6

我有一个名为Sounds.cs的类,用于管理我的表单中的声音播放,并且我希望能够调节其音量至小数值。是否有一种方法可以改变使用SoundPlayer对象播放的声音的音量?或者也许有不同的方式来播放声音使这成为可能?


“将音量调整为十进制值”是什么意思?请添加您尝试过的代码。 - AsthaUndefined
@AsthaSrivastava 我还没有尝试任何代码,因为我不知道从哪里开始。我有一个变量volume,它的值在0到100之间,我想能够调整使用player.Play()播放的声音的音量。 - Nolan B.
1个回答

7
很遗憾,SoundPlayer没有提供更改音量的API。您可以使用MediaPlayer类:
using System.Windows.Media;

public class Sound
{
    private MediaPlayer m_mediaPlayer;

    public void Play(string filename)
    {
        m_mediaPlayer = new MediaPlayer();
        m_mediaPlayer.Open(new Uri(filename));
        m_mediaPlayer.Play();
    }

    // `volume` is assumed to be between 0 and 100.
    public void SetVolume(int volume)
    {
        // MediaPlayer volume is a float value between 0 and 1.
        m_mediaPlayer.Volume = volume / 100.0f;
    }
}

您还需要添加对PresentationCoreWindowsBase程序集的引用。


正是我所需要的!如果一个.wav文件是一种嵌入式资源,我该如何获得它的Uri?最好不要嵌入它们,直接使用文件路径是否更好? - Nolan B.
啊,是的,“MediaPlayer”不支持那个。你只能把.wav文件放在磁盘上。 - Sam
MediaPlayer似乎可以工作,但出现了一个奇怪的副作用,使我的Windows窗体缩小了一半。 - Nolan B.
哇,这太奇怪了!你在使用WinForms吗?PresentationCore是WPF的一部分;也许存在一些不兼容性。 - Sam
我在寻找System.Windows.Media时遇到了麻烦。在Visual Studio的“添加引用...”窗口中搜索PresentationCore。您还需要引用WindowBase以使用MediaPlayer类的Open()Play()函数。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接