在codeplex的WPF声音可视化器控件中需要滚动条

时间:2014-05-06 12:40:36

标签: wpf

我在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);

1 个答案:

答案 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" />

当我移动滑块时,它会根据移动方向放大/缩小。