gpt4 book ai didi

c# - 改变音量确实会移动 slider ,但不会移动音频输出

转载 作者:行者123 更新时间:2023-11-30 16:24:57 26 4
gpt4 key购买 nike

我的表单中有一个 slider 和一个网络浏览器对象,滑动它应该会改变音量,但它确实会移动 slider ,如下所示:Slider does move, but sound output doesn't change

但它不会改变音量的实际输出。这可能是因为我集成了 WebBrowser 对象并使用 Windows 7。当我手动滑动 slider (屏幕截图中看到的 slider )时,音量输出确实发生了变化。播放 .wav 文件时,音量的输出确实发生了变化,但 WebBrowser 对象没有变化。

我正在使用以下代码:

XAML

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Slider Minimum="0" Maximum="10" ValueChanged="ValueChanged"/>
</Grid>
</Window>

C#

public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}

private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
// Calculate the volume that's being set
double newVolume = ushort.MaxValue * e.NewValue / 10.0;

uint v = ((uint) newVolume) & 0xffff;
uint vAll = v | (v << 16);

// Set the volume
int retVal = NativeMethods.WaveOutSetVolume(IntPtr.Zero, vAll);

Debug.WriteLine(retVal);
}
}

static class NativeMethods
{
[DllImport("winmm.dll", EntryPoint = "waveOutSetVolume")]
public static extern int WaveOutSetVolume(IntPtr hwo, uint dwVolume);

}

最佳答案

尝试使用 MediaElement .

然后你可以像这样播放你的电台:

<MediaElement LoadedBehavior="Manual" x:Name="media" />

media.Source = new Uri(@"http://shoutcastinfo.radiostaddenhaag.com/stad.wax");
media.Play();

并改变音量

<Slider Minimum="0" Maximum="1" ValueChanged="ValueChanged"/>

private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
media.Volume = e.NewValue;
}

Windows Mixer 和 WPF slider 现在都可以适本地更改音量,但两者的值是独立的,不会反射(reflect)彼此的更改。

关于c# - 改变音量确实会移动 slider ,但不会移动音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com