使用筆跡分析的資料 Proxy

筆跡分析概觀中所述,筆跡分析技術會在內部維護樹狀結構型檔模型,以包含分析結果和關聯性。 如果您的應用程式已經有不同的已建立檔存放區,您必須使用設計為在不同檔模型之間 Proxy 資料的筆跡分析功能。

資料 Proxy 的類型

資料 Proxy 功能可讓您的應用程式:

  • 將分析結果資料整合回現有的檔模型。
  • 將先前的結果 (或狀態) 傳回 InkAnalyzer
  • 將非筆跡狀態傳達至 InkAnalyzer
  • 只傳達完成分析作業所需的最小資料集 (先前和非筆跡狀態) 。
  • 流量分析結果輕鬆地更新內部應用程式檔模型。

筆跡分析資料 Proxy 有兩種基本方法。 差異在於檔模型之間的同步處理發生時機和方式的詳細資料。 第一種方法同步更新需要修改筆跡分析檔模型,因為應用程式檔中發生變更。 第二種方法隨選更新只需要將應用程式檔模型變更所影響的資料傳遞至 InkAnalyzer。 也就是說,只有與應用程式檔修改位於相同區域中之筆跡分析檔模型部分的資料,才需要傳遞至 InkAnalyzer

同步更新

同步更新方法需要修改 (在 InkAnalyzer 物件的 CoNtextNode 物件集合中建立和刪除節點) ,因為它們發生在應用程式檔中。 例如,每次將文字單字新增至應用程式時,都會在 InkAnalyzer中建立對應的TextWord樣式CoNtextNode。 如果頁面上的文字文字位置變更,則會同時更新對應 CoNtextNode 的位置。 此方法比隨選方法的運算資源效率較低,因為每個檔變更都牽涉到 InkAnalyzer的更新,即使變更不會影響要分析的筆跡也一樣。

下列範例旨在示範同步更新的運作方式。 想像一下具有現有檔模型的應用程式。 當使用者對檔進行變更,例如新增文字時,會處理變更,如下所示:

  1. 終端使用者會建立新的資料。
  2. 應用程式會決定如何處理資料、儲存資料,以及轉譯資料。
  3. 為了達到實際目的,會同時執行下列步驟。
    1. 應用程式會將資料放入其檔模型。
    2. 應用程式會建立 InkAnalyzer 並加以更新。 同時執行這項操作可確保 InkAnalyzer 一律具有最新的資訊。
    3. 應用程式會在InkAnalyzer 上呼叫 BackgroundAnalyze以開始分析。
  4. 如果變更牽涉到筆跡, InkAnalyzer 會決定新的結果,就會引發一系列事件。 針對InkAnalyzerCoNtextNode物件的集合所做的每個變更,都會引發一個事件。 這些事件包括CoNtextNodeCreatedCoNtextNodeDeletingCoNtextNodeMovingToPositionCoNtextNodePropertiesUpdatedCoNtextNodeLinkAdding、CoNtextNodeLinkDeletingCoNtextNodeReparenting 應用程式會處理這些事件,以視需要將分析作業的結果 Proxy 回檔模型。
  5. 應用程式會更新檔的版面配置,並從檔模型提取新資料。
  6. 新的資料會轉譯回給終端使用者。

隨選更新

隨選方法只需要針對正在分析之區域中的 CoNtextNode 物件傳遞資料。 所需的 CoNtextNode 物件會在叫用分析作業之後,從應用程式的檔模型擷取,然後在重新協調結果之前再次擷取。 雖然實作比同步更新更複雜,但此方法會產生更佳的效能結果。

筆跡分析概觀

InkAnalyzer 類別 (C++)

Microsoft.Ink.InkAnalyzer

Microsoft.Ink.CoNtextNode