次の方法で共有


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 オブジェクトに応答して、入力キューにカスタム スタイラス データを追加します。 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 オブジェクトは、AddCustomStylusDataToQueue メソッドが、guid パラメーターを DynamicRendererCachedDataGuid グローバル一意識別子 (GUID) に設定して呼び出されたときに例外をスローします。

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

カスタム レンダリング

独自の動的レンダラー プラグインを作成するには、StylusDownPackets、および StylusUp 通知をサブスクライブする同期プラグインを作成します。 プラグインは、描画中にストロークをレンダリングできます。 これは、自由形式の選択ボックスや選択ボックスなどを使用する選択ツールを実装する 1 つの方法です。