2010-02-22 25 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