InkCanvas有多種輸入模式。spa
經過InkCanvasEditingMode來進行對其調整線程
分別是3d
-
None=0// 忽略鼠標和手寫筆輸入
-
Ink = 1// 容許用戶繪製批註,默認模式。使用鼠標或者手寫筆繪圖時,會繪製筆畫
-
GestureOnly = 2// 不遠許用戶繪製筆畫批註,但會關注預先定義的特定姿式,由System.Windows.Ink.ApplicationGesture定義筆勢
-
InkAndGesture = 3// 容許用戶繪製壁畫批註,也能夠識別預先定義的姿式
-
Select = 4// 容許用戶選擇保存在Children集合中的元素,要選擇一個元素用戶必須單機該元素或者拖動套索選擇該元素,一旦選擇一個元素就能夠移動該元素,改變其尺寸或將其刪除
-
EraseByPoint = 5// 擦除鼠標選中的筆畫
-
EraseByStroke = 6// 擦除選中的一筆,開始到結束都會擦除
在Select模式下,會有6個事件code
這其中,有三個ing尾綴的事件,三個ed尾綴的事件,ing事件實在ed事件以前觸發。對象
分別是blog
ing
- SelectionChanging
- SelectionMoving
- SelectionResizing
ed
- SelectionChanged
- SelectionMoved
- SelectionResized
介紹完以後,主要說明如何撤銷選擇模式事件
若是直接在it
以上6種事件修改,會直接報錯io
private void T_SelectionChanged(object sender, EventArgs e) { t.EditingMode = InkCanvasEditingMode.Ink; }
錯誤爲ast
System.InvalidCastException:「沒法將類型爲「MS.Internal.Ink.SelectionEditor」的對象強制轉換爲類型「MS.Internal.Ink.StylusEditingBehavior」。」
處理方式是 新建線程來修改
private void T_SelectionChanged(object sender, EventArgs e) { new Thread(ts).Start(); } private void ts() { t.Dispatcher.Invoke(() => { t.EditingMode = InkCanvasEditingMode.Ink; }); }