我在codeplex(http://wpfsvl.codeplex.com/)使用WPF声音可视化控件。 无论何时加载音频文件,音频都会加载到具有固定长度的波形时间线控制中。因此,当加载任何长度的音频时,它会调整为波形时间线控制宽度。我无法在波形时间轴控件中添加滚动条,以便根据音频长度,波形时间轴控制宽度放大。
我在我的解决方案中引用了dll,并在我的xaml文件中包含了以下内容
xmlns:svl="clr-namespace:WPFSoundVisualizationLib;assembly=WPFSoundVisualizationLib"
我在xaml中添加了波形时间轴控制
<svl:WaveformTimeline x:Name="waveformTimeline"/>
要将音频文件加载到此控件中,请在xaml.cs中使用以下代码
NAudioEngine.Instance.OpenFile("audio file");
NAudioEngine soundEngine = NAudioEngine.Instance;
soundEngine.PropertyChanged += NAudioEngine_PropertyChanged;
UIHelper.Bind(soundEngine, "CanStop", StopButton, Button.IsEnabledProperty);
UIHelper.Bind(soundEngine, "CanPlay", PlayButton, Button.IsEnabledProperty);
UIHelper.Bind(soundEngine, "CanPause", PauseButton, Button.IsEnabledProperty);
UIHelper.Bind(soundEngine, "CanSave", PauseButton, Button.IsEnabledProperty);
waveformTimeline.RegisterSoundPlayer(soundEngine);
答案 0 :(得分:1)
我使用了2个控件来解决放大/缩小问题。控件是ScrollViewer和Slider。
首先我将WaveformTimeline控件嵌入到ScrollViewer控件中,如下所示
<ScrollViewer x:Name="waveScroll" HorizontalScrollBarVisibility="Visible" Grid.ColumnSpan="4" Margin="0,99,10,-95">
<svl:WaveformTimeline x:Name="waveformTimeline"
Margin="5" Width="8000"
BorderThickness="1" Grid.ColumnSpan="4" >
<svl:WaveformTimeline.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=xscroll, Path=Value}" />
</svl:WaveformTimeline.LayoutTransform>
</svl:WaveformTimeline>
</ScrollViewer>
我添加了Slider控件并将此控件绑定到WaveformTimeline控件中。
<Slider Name="xscroll" Width="100" VerticalAlignment="Center" Minimum=".5"
Maximum="2.0" Ticks=".5,.6,.7,.8,.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.75"
IsSnapToTickEnabled="True" Value="1" SmallChange=".25" LargeChange=".25"
Margin="84,201,248,-122" />
当我移动滑块时,它会根据移动方向放大/缩小。