2017-08-30 46 views
0

拖動WPF組件時是否可以劫持鼠標?WPF - 拖拽期間劫持鼠標輸入?

我們有一個極座標圖,需要使用鼠標來繪製。

而不是使用捕捉,並要求用戶有一定的靈活性來匹配曲線,是否有可能劫持鼠標輸入,並轉換鼠標x按照度/旋轉和鼠標y來跟隨幅度?

Polar mouse mapping

藍色代表在指針會從原產紅一拖後結束。

+0

你能提供繪圖的代碼嗎?你如何確定什麼時候發生量級轉換?繪圖是否以鼠標點擊開始?=! –

+0

發生拖動時。這是目前的理論,因爲我是全新的C#和WPF。不,我不能分享當前圖紙的代碼,因爲它可能會違反許可證,目前它並不像我描述的那樣行事。我試圖探究的是,這是可能的或暗示的,這樣我就可以證明,在新框架中重構代碼所花的時間值得改進可用性。 –

+0

「我試圖去探究,這是可能的還是暗示,」我想你不會指望有人會在這裏爲你寫代碼。一個提示是研究如何從光標位置獲取圖表座標,以及如何以編程方式更改光標位置。 –

回答

1

與其他人一樣提到它是很難寫的東西沒有看到,你走到這一步,任何代碼。但這將是我的承擔。 WPF中常見的模式之一是MVVM。 MVVM代表模型視圖ViewModel。關鍵是要讓你正在繪製的值或基本上所有視圖在ViewModel中相關,並且只需通過在ViewModel(轉儲視圖)的UI上進行綁定來繪製圖形。現在,無論何時移動鼠標,都會將捕獲座標與視圖模型中繪圖的值進行比較。然後,您必須檢測要接管鼠標指針的模式,並通過代碼更新位置。也許你需要對運動進行內插以使其更加平滑。

也是一個非常好的圖書館與事件,尤其是鼠標事件工作的Rx(https://github.com/Reactive-Extensions/Rx.NET)這可以幫助鼠標事件做出反應和檢測模式。

就像我說的,這只是一種方法我將如何開始自己的工作,這樣的任務。由於您迄今尚未提供任何代碼,所以很難詳細介紹。但我希望這可能有助於制定一項戰略。