滑块步进率基于移动滑块的速度

本文关键字:速度 移动 步进率 于移动 | 更新日期: 2023-09-27 18:10:43

我有一个UWP XAML应用程序,它使用滑块作为网络上一个音频硬件的音量控制。我的问题是在发送音量变化之间需要50毫秒以上的延迟,所以如果我快速地将滑块从最小移动到最大,则硬件需要几秒钟才能跟上,因为应用程序正在发送滑块的每个valuechanged事件的新+1级。

我不想改变滑块的步长,因为我也想要精确控制。小步/大步并没有真正的帮助。是否有内置的功能,将根据你移动滑块的速度改变步长,即慢速移动,步长=1,中等移动步长=5,快速移动步长= 10?

如果没有,有没有人对如何实现这一点有任何建议?我想我可以用操作事件做点什么。

滑块步进率基于移动滑块的速度

有一种方法可以根据拖动速度改变滑块的步长。您必须订阅ManipulationDelta事件(不要忘记将滑块的ManipulationMode设置为System或None以外的其他内容)。然后在处理程序中从ManipulationDeltaRoutedEventArgs参数中获得Velocities。像这样的

public void MySlider_ManipulationDelta(object sender, 
  ManipulationDeltaRoutedEventArgs e)
{
    var velocities = e.Velocities
    var slider = sender as Slider;
    if(slider != null)
    {
        //Create a fomula based on the velocities to fit your needs.
    }
}

你还应该记得在ManipulationCompleted事件上重置滑块的步长。

话虽如此,我不明白如何根据拖动速度改变步长来帮助你达到预期的结果。根据我的理解,由于你无法控制的参数(网络,硬件等),你的应用程序发送数据的时间和硬件反映变化的时间之间有50ms的延迟。就这样。