2010-03-17 53 views
1

.NET中的GestureRecognizer類的documentation指出,Recognize方法返回的結果的排序順序與置信度有多強有關。如何解讀GestureRecognizer結果排序順序?

但是,當我創建自己的示例(在WPF,.NET 3.5sp1中)創建一個識別器時,我看不到這種行爲。爲了記錄,我設置識別器識別所有可能的手勢(ApplicationGesture.AllGestures)。

我的代碼從MouseDown開始,然後在MouseMove上記錄所有點,直到它接收到一個MouseUp事件,然後調用Recognizer.Recognize()從所有這些點生成的stroke(通常在100個點左右)。

我往往得到的是4+排序這樣的命中(括號內報告的置信度):

  1. NoGesture(強)
  2. ArrowLeft(中級)
  3. 廣場(強)
  4. ChevronDown (強)

這是一個錯誤?我應該只關注數組中的第一個項目嗎?

回答

2

我的工作經驗是,結果集中項目的順序至少有點武斷。我通過置信度(降序)結束了排序,然後根據上下文來判斷它是一種期望的姿勢,以及對給定姿勢對應用程序狀態做出多少改變的感覺。

例如:如果我知道圈子是「選擇此項目」的手勢,Square是「重建此項目的緩存數據,這可能需要5分鐘,因爲我們去了多個外部服務」(顯然是一個窮人在給定相似度的情況下選擇手勢),如果兩個人都以相同的信心回來,我寧願選擇Circle。有時我甚至會對較高的信心抱有較低的信心(比如說,在一個級別內)。

這確實需要在應用程序中有強烈的上下文感,但是我發現確保您沒有獲得兩個「強大」信心並完成那些需要更多工作才能撤消的信任是有價值的。關於這些手勢界面總是這樣的一件事情是,我們絕對不會在100%的時間內做正確的事情,所以如果我們錯了,那麼做的事情損失最少,這是需要記住的。