次の方法で共有


StylusInput API の設計に関する考慮事項

StylusInput API の設計上の考慮事項を次に示します。

  • ペンがダウンしている間は、RealTimeStylus オブジェクトの WindowInputRectangle プロパティと DynamicRenderer オブジェクトの ClipRectangle プロパティを更新できます。 これは、アプリケーションがインクを収集している間に動的な描画領域を作成する場合に便利です。

  • プラグイン コードの再利用とメンテナンスを最適化するために、プラグインはアプリケーションに直接呼び出すのではなく、 CustomStylusData (マネージド コードの CustomeStylusData オブジェクト) を使用してアプリケーションと通信する必要があります。

  • RealTimeStylus オブジェクトのプラグイン コレクションは順序付けされます。 これらのコレクション内でのプラグインの相対的な位置は非常に重要な場合があります。 たとえば、パケット情報を変更するプラグインは、動的レンダラー プラグインの前に同期プラグイン コレクションに追加する必要があります。

  • タブレット ペンのデータ ストリームにカスタム スタイラス データを追加する機能は、慎重に使用する必要があります。 この機能は、別のプラグインがデータ ストリームの一部としてこの情報を受信する必要がある場合にのみ使用します。 また、プラグインに入ってくる他のカスタム スタイラス データに応答してカスタム スタイラス データを追加することは避けてください。これにより無限ループが発生する可能性があります。

  • プラグイン コレクションは、 RealTimeStylus オブジェクトが有効になっている間に変更できます。ただし、これにより、アプリケーションの動作の予測が困難になる可能性があります。 RealTimeStylus オブジェクトが有効になっているときにプラグインが追加されると、RealTimeStylus オブジェクトはプラグインの Microsoft.StylusInput.IStylusSyncPlugin を呼び出します。 RealTimeStylusEnabled メソッド (マネージド コードの Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled または Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled メソッド)。 RealTimeStylus オブジェクトが有効になっている間にプラグインが削除されると、RealTimeStylus オブジェクトはプラグインの RealTimeStylusDisabled メソッド (Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled または Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusDisabled メソッドをマネージド コードで呼び出します)。 これにより、プラグインは RealTimeStylus オブジェクトの Enabled プロパティをチェックしなくても、適切な状態を維持できます。RealTimeStylus オブジェクトが有効になっているときにプラグインが追加されると、プラグインが受け取るプラグイン データに、初期データのコンテキストを適切に確立するのに十分な情報が含まれていない可能性があります。 たとえば、新しく追加されたプラグインでは、中間ストロークのペンからパケット データの受信を開始できます。 同様に、 RealTimeStylus オブジェクトが有効な間にプラグインが削除されると、プラグインが受け取ったプラグイン データが、データの処理を完了するのに不十分な場合があります。

    注意

    全体的な安定性のために、RealTimeStylusEnabled メソッドまたは RealTimeStylusDisabled メソッドが呼び出されたときに、プラグインの内部状態をリセットします。

     

  • RealTimeStylus オブジェクトは、プラグインがアタッチ先のプラグイン コレクションを変更した場合に例外をスローします。 これは、プラグインがそのコレクションのメンバーとして RealTimeStylus オブジェクトによって呼び出されている間にのみ発生します。