次の方法で共有


Dynamic-Renderer プラグイン

動的レンダラー プラグインは、 RealTimeStylus オブジェクトによって処理されているタブレット ペン データをリアルタイムで表示するオブジェクトです。 後でフォームの更新などのイベントの場合、動的レンダラー プラグインまたはインク コレクター プラグインでインクを再描画できます。

DynamicRenderer オブジェクト

RealTimeStylus オブジェクトは、IStylusSyncPlugin インターフェイスを実装します。 DynamicRenderer オブジェクトは、描画中のインクをリアルタイムでレンダリングします。 DynamicRenderer オブジェクトが有効になっているときに Refresh メソッドが呼び出されると、DynamicRenderer オブジェクトは現在収集されているストロークを再描画します。 DynamicRenderer オブジェクトの Enabled プロパティは、最初は FALSE に設定されています

注意

マネージ コードの Paint イベント ハンドラー内から DynamicRenderer オブジェクトの Refresh メソッドを呼び出す場合は、DynamicRenderer オブジェクトの ClipRectangle プロパティを PaintEventArgs オブジェクトの ClipRectangle プロパティに設定します。

 

DynamicRenderer オブジェクトは、インク データを一時的にキャッシュできます。 マネージド コードでこの機能を使用するには、 EnableDataCache プロパティを TRUE に設定 しますDynamicRenderer オブジェクトは、IStylusSyncPlugin.StylusUp メソッドの呼び出しを受け取ると、ストローク データをキャッシュし、ストロークの StylusUpData オブジェクトに応答して Input キューにカスタム スタイラス データを追加します。 CustomStylusData オブジェクトの CustomDataId プロパティは DynamicRendererCachedDataGuid 値に設定され、CustomStylusData オブジェクトの Data プロパティには DynamicRendererCachedData オブジェクトが含まれています。 ストロークが収集され、静的にレンダリングできたら、 DynamicRenderer オブジェクトの ReleaseCachedData メソッドを呼び出します。 DynamicRenderer オブジェクトが有効になっているときに Refresh メソッドが呼び出されると、DynamicRenderer オブジェクトはキャッシュされているすべてのストロークを再描画します。 DataCacheEnabled プロパティが false に設定されている場合、キャッシュされたストローク データは削除されます。

次の図は、DynamicRenderer オブジェクトの DataCacheEnabled プロパティが設定されている場合に、DynamicRenderer オブジェクトがタブレット ペン データにデータを追加する方法を示しています。

dynamicrenderer データ フローを示す図

この図では、"SD" という円は StylusDown オブジェクトを表し、"P" という円は RealTimeStylus オブジェクトの出力キューに既に追加されており、非同期プラグイン コレクションにまだ送信されていない Packets オブジェクトを表します。 "SU" という円は、RealTimeStylus オブジェクトが現在処理している StylusUp オブジェクトを表します。 同期プラグイン コレクションに送信され、出力キューに配置されます。 "DR" という文字が付いた円は、"SU" に関連付けられたスタイラスアップ通知に応答して DynamicRenderer プラグインによって入力キューに追加されるカスタム スタイラス データを表します。 次に、"DR" という文字が付いたカスタム スタイラス データが同期プラグインに渡され、次に出力キューに渡されてから、次のタブレット ペン データが処理されます。 空の円は、将来のタブレット ペン データが追加される出力キュー内の位置を表します。 また、インク コレクション プラグインがストロークを処理した後、キャッシュされたストローク データを解放するために DynamicRenderer オブジェクトの ReleaseCachedData メソッドを呼び出すインク コレクター プラグインも図で表されます。

特別な考慮事項

次の一覧では、 DynamicRenderer オブジェクトを使用するときに考慮すべきその他の点について説明します。

  • DynamicRenderer オブジェクトを複数の RealTimeStylus オブジェクトにアタッチしないでください。 DynamicRenderer オブジェクトがアタッチされている 2 つの RealTimeStylus オブジェクトが有効になると、次の処理が行われます。

    • DynamicRenderer オブジェクトは、RealTimeStylusEnabled メソッドの 2 番目の呼び出しに応答して例外をスローします。
    • 有効にされた 2 番目の RealTimeStylus オブジェクトは Error オブジェクトを生成し、そのプラグイン コレクション内の残りのプラグインにエラーを通知します。
    • DynamicRenderer オブジェクトは、タブレット ペン データのレンダリングを停止します。
  • RealTimeStylus オブジェクトは、Guid パラメーターを DynamicRendererCachedDataGuid グローバル一意識別子 (GUID) に設定して AddCustomStylusDataToQueue メソッドが呼び出されたときに例外をスローします。

  • DynamicRenderer オブジェクトはコンポーネント オブジェクト モデル (COM) ラッパーとして実装されており、その IStylusSyncPlugin インターフェイス メソッドを直接呼び出すことはできません。 COM 操作と RealTimeStylus オブジェクトの詳細については、「 StylusInput API の実装に関するメモ」を参照してください。

カスタム レンダリング

StylusDownPacketsStylusUp 通知をサブスクライブする同期プラグインを作成することで、独自の動的レンダラー プラグインを作成できます。 その後、プラグインは描画中にストロークをレンダリングできます。 これは、たとえば、自由形式の選択または選択ボックスを使用する選択ツールを実装する方法の 1 つです。