如何将速度和/或加速度合并到(WPF)滚动查看器中?

问题描述 投票:2回答:1

我有一个用于平移的WPF scrollViewer(MouseDown,MouseMove,MouseUp),我想添加一个包含惯性的加速效果。因此,如果鼠标移动超过阈值速度,而我松开鼠标,则它会继续平移,但会根据初始速度降低速度。有任何想法,想法或例子吗?

wpf scrollviewer panning acceleration
1个回答
2
投票

我之前基本上已经做过此工作,首先查看ScrollViewer,但最后将它扔掉,并使用带有Canvas的Viewbox作为内容绝对位置的子项(我当时支持zoom aswel作为滚动,它基本上是[ DeepZoom没有缩放的图像进行缩放,因此向右放大时会有像素化。我编写了用于从鼠标事件确定手势方向和手势速度的代码,并将其转换为滚动方向和速度,然后对可滚动内容的Canvas.Left和Canvas.Top属性进行了动画处理(位于Children集合中)带有DoubleAnimation的Viewbox的子Canvas)。它运行良好,但是可能有更好的方法... heres一个线程建议通过Frame控件在WPF中托管DeepZoom(尽管我不会那样做)。

编辑:基本上ScrollViewer太严格了。即使您进入ControlTemplate并直接获得对ScrollBars的引用,也需要对其进行动画处理的是这些滚动条的Thumb的位置,我很确定这是我发现我做不到的(这是大约3年前:)

© www.soinside.com 2019 - 2024. All rights reserved.