2010-02-22 74 views
2

我有一个WPF的scrollViewer,我用于平移(MouseDown,MouseMove,MouseUp),我想包括一个合并惯性的加速效果。因此,如果鼠标移动超出阈值速度并释放鼠标,它将继续平移,但会随着初始速度的变化而变慢。任何想法,想法或例子?如何将速度和/或加速度合并到(WPF)滚动查看器中?

+0

你说的基于鼠标手势的iPhone风格滚动? – 2010-02-22 23:05:40

+0

是的,或多或少。 – Brad 2010-02-22 23:06:50

回答

2

我已经基本完成了这之前,通过看ScrollViewer开始,但最终扔了它,并使用一个视图框与画布作为孩子绝对定位的内容(我支持缩放aswel滚动,这是基本上DeepZoom没有缩放的图像进行缩放,因此当放大时有像素化)。我编写了用于确定手势方向和鼠标事件手势速度的代码,并将其转换为滚动方向和速度,然后对可滚动内容的Canvas.Left和Canvas.Top属性进行了动画制作(这是Children集合使用DoubleAnimation创建视图框的子画布)。它工作得很好,但是可能有更好的方法... heres一个线程建议在WPF中通过Frame控件托管DeepZoom(尽管我不会这么做)。

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

+0

伟大的例子西蒙。现在看看。 – Brad 2010-02-23 00:20:39