2

我有一个用于平移(MouseDown、MouseMove、MouseUp)的 WPF scrollViewer,我想包含一个包含惯性的加速效果。因此,如果鼠标移动超过阈值速度并且我释放鼠标,它会继续平移,但会根据初始速度减慢速度。有什么想法、想法或例子吗?

4

1 回答 1

2

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

编辑:基本上 ScrollViewer 太受限制了。即使您进入 ControlTemplate 并直接获取对 ScrollBars 的引用,您也需要为这些滚动条的 Thumb 位置设置动画,我很确定这是我发现我做不到的(它是差不多 3 年前 :)

于 2010-02-22T23:38:40.540 回答