WPF InkCanvas EditingMode為Select時 在其選擇時各種事件中撤銷Select模式的方法
阿新 • • 發佈:2019-04-01
internal span zed clas system system.in 處理方式 select 圖片
InkCanvas有多種輸入模式。
通過InkCanvasEditingMode來進行對其調整
分別是
-
None=0// 忽略鼠標和手寫筆輸入
-
Ink = 1// 允許用戶繪制批註,默認模式。使用鼠標或者手寫筆繪圖時,會繪制筆畫
-
GestureOnly = 2// 不遠許用戶繪制筆畫批註,但會關註預先定義的特定姿勢,由System.Windows.Ink.ApplicationGesture定義筆勢
-
InkAndGesture = 3// 允許用戶繪制壁畫批註,也可以識別預先定義的姿勢
-
Select = 4// 允許用戶選擇保存在Children集合中的元素,要選擇一個元素用戶必須單機該元素或者拖動套索選擇該元素,一旦選擇一個元素就可以移動該元素,改變其尺寸或將其刪除
-
EraseByPoint = 5// 擦除鼠標選中的筆畫
-
EraseByStroke = 6// 擦除選中的一筆,開始到結束都會擦除
在Select模式下,會有6個事件
這其中,有三個ing尾綴的事件,三個ed尾綴的事件,ing事件實在ed事件之前觸發。
分別是
ing
- SelectionChanging
- SelectionMoving
- SelectionResizing
ed
- SelectionChanged
- SelectionMoved
- SelectionResized
介紹完之後,主要說明如何撤銷選擇模式
如果直接在
以上6種事件修改,會直接報錯
private void T_SelectionChanged(object sender, EventArgs e) { t.EditingMode = InkCanvasEditingMode.Ink; }
錯誤為
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; }); }
WPF InkCanvas EditingMode為Select時 在其選擇時各種事件中撤銷Select模式的方法