滑块步进率基于移动滑块的速度
本文关键字:速度 移动 步进率 于移动 | 更新日期: 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的延迟。就这样。