WPF InkCanvas EditingMode爲Select時 在其選擇時各類事件中撤銷Select模式的方法

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

  1. SelectionChanging
  2. SelectionMoving
  3. SelectionResizing

 

ed

  1. SelectionChanged
  2. SelectionMoved
  3. 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; }); }
相關文章
相關標籤/搜索