認識エンジン プラグインは、ジェスチャ、手書き、またはその他のオブジェクトのタブレット ペンの動きを監視するオブジェクトです。
システム ジェスチャ
RealTimeStylus オブジェクトは、システム ジェスチャを認識します。 RealTimeStylus オブジェクトは、SystemGestureの StylusUpData オブジェクトなど、ジェスチャを完了するデータに応答して、StylusQueues キューに SystemGestureData オブジェクトを追加します。 詳細については、「プラグイン データと RealTimeStylus クラス」を参照してください。
GestureRecognizer オブジェクト
GestureRecognizer オブジェクトは、IStylusSyncPluginを実装し、IStylusAsyncPluginインターフェイスをします。 GestureRecognizer オブジェクトは、アプリケーション ジェスチャを認識します。 内部的には、GestureRecognizer オブジェクトは、Microsoft ジェスチャ認識エンジンを使用してジェスチャ認識を実行します。
GestureRecognizer オブジェクトがジェスチャを認識すると、ストロークの StylusUpData オブジェクトに応答して、StylusQueues キューにカスタム スタイラス データが追加されます。 CustomStylusData オブジェクトの CustomDataId プロパティは GestureRecognitionDataGuid 値に設定され、CustomStylusData オブジェクトの Data プロパティには、GestureRecognitionData オブジェクトが含まれています。
次の図は、GestureRecognizer オブジェクトがタブレット ペン データにデータを追加する方法を示しています。
ジェスチャ認識のデータ フロー図
この図では、"SD" という円は StylusDownData オブジェクトを表し、"P" という円は、RealTimeStylus オブジェクトの出力キューに既に追加されており、非同期プラグイン コレクションにまだ送信されていない PacketsData オブジェクトを表します。 "SU" という円は、RealTimeStylus オブジェクトが現在処理している StylusUpData オブジェクトを表します。 同期プラグイン コレクションに送信され、出力キューに配置されます。 "GR" という円は、"SU" に関連付けられたスタイラスアップ通知に応答して、GestureRecognizer プラグインによって入力キューに追加されるカスタム スタイラス データを表します。 次に、"GR" という文字が付いたカスタム スタイラス データが同期プラグインに渡され、次のタブレット ペン データが処理される前に出力キューに渡されます。 空の円は、将来のタブレット ペン データが追加される出力キュー内の位置を表します。
既定では、GestureRecognizer オブジェクトは単一ストローク ジェスチャのみを認識します。ただし、GestureRecognizer オブジェクトは、マルチストローク ジェスチャを認識するように設定できます。 マルチストローク ジェスチャの場合、CustomStylusData オブジェクトは、ジェスチャの最後のストロークの StylusUpData オブジェクトに応答して、StylusQueues キューに追加されます。 マルチストローク ジェスチャを認識すると、重複するストローク のセットに関する通知を受け取ることがあります。 例えば、第1および第2のストロークは一緒に1つのジェスチャーとして認識され、第2のストロークは単独でジェスチャーとして認識され得る。 マルチストローク ジェスチャ認識の詳細については、GestureRecognizer クラスと MaxStrokeCount プロパティを参照してください。
マルチストローク ジェスチャ認識に GestureRecognizer オブジェクトを使用している場合は、カスケードされた RealTimeStylus モデルを使用し、GestureRecognizer オブジェクトをセカンダリ RealTimeStylus オブジェクトにアタッチすることで、最適なパフォーマンスを実現できます。 カスケード RealTimeStylus モデルの詳細については、「カスケードされた RealTimeStylus モデル を参照してください。
特別な考慮事項
次の一覧では、GestureRecognizer オブジェクトを使用する場合に考慮すべきその他の点について説明します。
-
GestureRecognizer オブジェクトを複数の RealTimeStylus オブジェクトにアタッチしないでください。
GestureRecognizer オブジェクトがアタッチされている 2 つの RealTimeStylus オブジェクトが有効になると、次の処理が行われます。
- GestureRecognizer オブジェクトは、RealTimeStylusEnabled メソッドの 2 回目の呼び出しに応答して例外をスローします。
- 有効にされた 2 番目の RealTimeStylus オブジェクトは、ErrorData オブジェクトを生成し、そのプラグイン コレクション内の残りのプラグインにエラーを通知します。
- GestureRecognizer オブジェクトがジェスチャの認識を停止します。
- RealTimeStylus オブジェクトは、AddCustomStylusDataToQueue メソッドが、guid パラメーターを Microsoft.StylusInput.GestureRecognizer.GestureRecognitionDataGuid グローバル一意識別子 (GUID) に設定して呼び出されると、例外をスローします。
- GestureRecognizer オブジェクトはコンポーネント オブジェクト モデル (COM) ラッパーとして実装されており、IStylusSyncPluginを呼び出したり、IStylusAsyncPluginインターフェイス メソッド直接呼び出したりすることはできません。 COM 実装と RealTimeStylus オブジェクトの詳細については、「StylusInput API の実装に関するノート」を参照してください。
カスタム ジェスチャ認識
手書き、ジェスチャ、またはその他のオブジェクトを認識するカスタム認識エンジン プラグインは、次の方法で作成できます。
- 既存の Recognizer オブジェクトにストローク情報を渡し、AddCustomStylusDataToQueue メソッドを使用してタブレット ペン データ ストリームに結果を追加します。
- プラグイン内で認識を実行し、AddCustomStylusDataToQueue メソッドを使用して、結果をタブレット ペン データ ストリームに追加します。
関連トピック