次の方法で共有


StylusInput API のアーキテクチャ

StylusInput API を使用すると、タブレット ペン データ ストリームを操作できます。 データ ストリームを操作するには、アプリケーションに RealTimeStylus オブジェクトを追加し、 RealTimeStylus オブジェクトにプラグインを追加します。

StylusInput API には、2 つのプラグインが用意されています。 DynamicRenderer オブジェクトは、IStylusSyncPlugin インターフェイスを実装します。 DynamicRenderer オブジェクトは、描画中のインクをリアルタイムでレンダリングします。 GestureRecognizer オブジェクトは、IStylusSyncPlugin インターフェイスと IStylusAsyncPlugin インターフェイスを実装します。 GestureRecognizer オブジェクトは、アプリケーション ジェスチャを認識します。

定義

StylusInput API について説明するセクションでは、次の用語を使用します。

同期プラグイン

IStylusSyncPlugin インターフェイスを実装するクラス。 同期プラグインは通常、 RealTimeStylus オブジェクトによって直接呼び出されます。

非同期プラグイン

IStylusAsyncPlugin インターフェイスを実装するクラス。 非同期プラグインは、通常、アプリケーションのユーザー インターフェイス (UI) スレッドで呼び出されます。

同期プラグイン コレクション

IStylusSyncPlugin オブジェクトの順序指定されたコレクションである StylusSyncPluginCollection コレクション。 同期プラグイン コレクションは、通常、RealTimeStylus オブジェクトの SyncPluginCollection プロパティに割り当てられたコレクションを参照します。 同期プラグイン コレクションには、同期プラグインのみを追加できます。

非同期プラグイン コレクション

IStylusAsyncPlugin オブジェクトの順序付けられたコレクションである StylusAsyncPluginCollection コレクション。 非同期プラグイン コレクションは、通常、RealTimeStylus オブジェクトの AsyncPluginCollection プロパティに割り当てられたコレクションを参照します。 非同期プラグイン コレクションには、非同期プラグインのみを追加できます。

同期プラグインと非同期プラグイン

RealTimeStylus オブジェクトは、タブレット ペンからデータ ストリームにリアルタイムでアクセスできるように設計されています。 データ ストリームへのリアルタイム アクセスを必要とし、パケット フィルター処理など、計算的に管理されていないタスクに対して同期プラグインを作成または使用します。 InkDisp オブジェクトでのストロークの作成や格納など、データ ストリームへのリアルタイム アクセスを必要としないタスクの非同期プラグインを作成または使用します。

特定のタスクでは、計算が要求されるが、マルチストローク ジェスチャ認識など、データ ストリームへのリアルタイム アクセスが必要な場合があります。 これらのニーズに対応するために、StylusInput API にはカスケードされた RealTimeStylus モデルが用意されています。このモデルでは、それぞれ独自のスレッドで実行されている 2 つの RealTimeStylus オブジェクトを使用できます。 カスケードされた RealTimeStylus モデルの詳細については、「 カスケードされた RealTimeStylus モデル」を参照してください。

プラグインの使用と作成の詳細については、「 StylusInput API の操作」を参照してください。

タブレット ペン データ ストリーム

RealTimeStylus オブジェクトには、タブレット ペン データを格納する 2 つの内部キュー(入力キューと出力キュー)があります。 ペン データは、 Microsoft.StylusInput.PluginData 名前空間のクラスのインスタンスに変換されます。 次の一覧では、 RealTimeStylus オブジェクトがタブレット ペン データを処理する方法について説明します。

RealTimeStylus オブジェクトは、最初に入力キューでプラグイン データ オブジェクトをチェックし、次にタブレット ペン データ ストリームからプラグイン データ オブジェクトを確認します。

RealTimeStylus オブジェクトは、同期プラグイン コレクション内のオブジェクトに 1 つのプラグイン データ オブジェクトを送信します。 各同期プラグインは、入力キューまたは出力キューにデータを追加できます。

プラグイン データ オブジェクトが同期プラグイン コレクションのすべてのメンバーに送信されると、プラグイン データ オブジェクトは RealTimeStylus オブジェクトの出力キューに配置されます。

RealTimeStylus オブジェクトは、次に処理するプラグイン データ オブジェクトを確認します。

RealTimeStylus オブジェクトの出力キューにはデータが含まれていますが、RealTimeStylus オブジェクトは、出力キューから非同期プラグイン コレクション内のオブジェクトに 1 つのプラグイン データ オブジェクトを送信します。 各非同期プラグインは、入力キューまたは出力キューにデータを追加できます。 ただし、非同期プラグインは UI スレッドで実行されるため、データは、 RealTimeStylus オブジェクトが処理している現在のペン データに関連してキューに追加され、非同期プラグインが処理しているデータとは関係ありません。

次の図は、 RealTimeStylus オブジェクトとそのプラグイン コレクションを介したタブレット ペン データのフローを示しています。

realtimestylus オブジェクトとそのプラグイン コレクションを介したタブレット ペン データのフロー

この図では、"A" と "B" というラベルが付いた円は、 RealTimeStylus オブジェクトの出力キューに既に追加されており、非同期プラグイン コレクションにまだ送信されていないタブレット ペン データを表しています。 "C" というラベルが付いた円は、 RealTimeStylus オブジェクトが現在処理しているタブレット ペン データを表します。 同期プラグイン コレクションに送信され、出力キューに配置されます。 空の円は、将来のタブレット ペン データが追加される出力キュー内の位置を表します。

特定のデータをキューに追加して処理する方法の詳細については、「 プラグイン データと RealTimeStylus クラス」を参照してください。

StylusInput API

StylusInput API は、主に Microsoft.StylusInput 名前空間と Microsoft.StylusInput.PluginData 名前空間にあります。 ただし、StylusInput API は、Tablet クラス、TabletPropertyDescriptionCollection コレクションApplicationGesture および SystemGesture 列挙など、Microsoft.Ink 名前空間の一部のクラスも参照します。

DynamicRenderer

GestureRecognizer

Realtimestylus

IStylusAsyncPlugin

IStylusSyncPlugin

StylusInput API の操作

カスケードされた RealTimeStylus モデル