次の方法で共有


Ink コレクション

インク コレクションはデジタイザーから始まります。 ユーザーがデジタイザーにペンを置き、書き込みを開始します。 API のインク収集機能を使用して、ペンから "流れる" インク データのコレクションを管理できます。 Tablets コレクションと Tablet オブジェクトを使用して、タブレット PC で使用可能なハードウェアに関する情報にアクセスできます。 次に、 InkCollector オブジェクトを使用して、デジタイザーから取得されるデータを取得します。

タブレットと Tablet オブジェクト

タブレットは、 タブレット PC のデジタイザー デバイスを表します。 タブレット PC には複数のデジタイザーが含まれる場合があります。 Tablet オブジェクトを使用すると、 タブレット PC に接続されている使用可能なデジタイザー デバイスと、それぞれのハードウェア機能を照会できます。 たとえば、操作している タブレット がディスプレイと統合されているか、別の外部デバイスかを判断できます。

InkCollector オブジェクト

InkCollector オブジェクトは、使用可能なタブレット デバイスからインク入力をキャプチャします。 InkCollector オブジェクトは、特定のウィンドウに入力されたインクとジェスチャのみを収集します。 非常に効率的なイベント シンクは、この入力をリアルタイムでレンダリングします。 InkCollector オブジェクトは、入力をキャプチャして Ink オブジェクトに送ります。

Note

デジタイザーデバイスのハードウェア機能によっては、複数のペンで同時にインクを敷設すると、動作する場合と動作しない場合があります。

 

インク コレクターのしくみ

InkCollector オブジェクトは、それ自体を既知のアプリケーション ウィンドウにアタッチします。 その後、ユーザーは使用可能なタブレット PC デバイス (マウスを含む) を使用して、そのウィンドウにリアルタイムでインクを置くことができます。 収集するインク ストロークは、関連付けられた Ink オブジェクトに格納されます。 これらのストロークは、認識のために操作または認識エンジンに送信できます。 InkCollector オブジェクトは、カーソルが使用されているタブレット PC デバイスの範囲に入ったときにもアプリケーションに通知します。

InkCollector オブジェクトがインク対応ウィンドウ内でマウス カーソルを正確に設定するには、そのウィンドウがWM_SETCURSORメッセージを受信できる必要があります。 これはすべての通常のウィンドウで成功しますが、ダイアログ ボックス内のコントロールの場合、コントロールのダイアログ親はこのメッセージをフィルター処理します。 コントロールがメッセージを受信するには、 SS_NOTIFY スタイルを設定します。

InkOverlay オブジェクト

前に説明した InkCollector オブジェクトは、選択、消去、およびその他のユーザー操作用の独自のモデルをアプリケーションで提供するのに役立ちます。 InkOverlay オブジェクトは、編集サポートを提供する InkCollector オブジェクトのスーパーセットです。 これは、オブジェクトが提供する一連の標準インク選択モデルを使用して、インク描画と編集を独自のドキュメント キャンバスに統合するアプリケーションに役立ちます。

InkCollector オブジェクトと InkOverlay オブジェクト (InkPicture コントロール) の両方で、Ink オブジェクトや DrawingAttributes コレクションなどの一般的なコンストラクトが使用されるため、インクの色を変更する基本的な方法はどこでも同じです。 これにより、コードを再利用し、共通のプログラム アクセスを持つことができます。これは、アプリケーションでスクリプトのサポートを提供する場合に特に重要な場合があります。

InkOverlay は、ユーザーがインクに対する認識の実行に関心を持たず、代わりにインクのサイズ、形状、色、位置に関心がある注釈シナリオに役立つ COM オブジェクトです。 ノートの作成や基本的な筆記に適しています。 既定のユーザー インターフェイスは、不透明なインクを含む透明な四角形です。

InkOverlay は、 InkCollector クラスを次の 3 つの方法で拡張します。

  • 開始ストローク、終了ストローク、インク属性の変更に関するイベントが発生します。
  • これにより、ユーザーはインクを選択、消去、サイズ変更できます。
  • 切り取り、コピー、貼り付けの各コマンドがサポートされています。

InkOverlay が役立つ一般的なシナリオは、プレゼンテーション スライドまたはイメージをマークアップすることです。 InkOverlay オブジェクトを使用すると、このシナリオで必要なインクとレイアウトの機能を簡単に実装できます。

InkOverlay を使用するには、次の操作を行います。

  1. InkOverlay オブジェクトをインスタンス化します。
  2. ウィンドウの hWnd (マネージド コードではハンドル) を InkOverlay オブジェクトの hWnd プロパティ (マネージ コードでは Handle プロパティ) にアタッチします。
  3. InkOverlay オブジェクトの Enabled プロパティを TRUE に設定します

InkOverlay オブジェクトには基本的な印刷サポートが含まれていますが、印刷プレビューまたはその他の高度な印刷機能を実装する必要があります。

InkOverlay は、インクシリアル化形式 (ISF) でインクを保持します。

Note

InkOverlay オブジェクトの EditingModeDelete または Select に設定されている場合、他のイベント (InkAddedInkDeletedStroke など) がトリガーされます。 これらのイベントは、独自の削除モードまたは選択モードを実装する場合に便利です。

 

インクの選択

InkOverlay オブジェクトを使用すると、ユーザーはなげなわツールを使用して、トレース領域に含まれるインク オブジェクトを選択できます。 ユーザーは、Ink オブジェクトをタップして インク を選択することもできます。

Selection プロパティを使用して、ユーザーの選択を操作するために使用できる Strokes コレクションを取得します。

Ink オブジェクトまたは Ink オブジェクトのセットが選択されている場合、サイズ変更ハンドルは、インクの境界ボックスの 4 つの角と、隣接する角の間のすべての中間点に表示されます。 ユーザーが選択した領域内の任意の場所にドラッグすると、インクはコントロール内で移動可能になります。

既定の動作

InkOverlay オブジェクトは、既定でインクを収集するように設定されています。 インクは幅 53 のインク空間ユニット (1 インク空間ユニット = 1 HIMETRIC) です。 ユーザーがハイ コントラスト モードで実行されていない場合、インクは黒になります。 それ以外の場合、ink は COLOR_WINDOWTEXT 値 (マネージド コードでは WindowText ) に設定されます。 FitToCurveFALSE です

Cursor オブジェクトと Button オブジェクト

カーソルは、タブレット PC で使用されるペンの先端に対応します。 たとえば、鉛筆には両端があります。 通常、一方の端は書き込みに使用され、もう一方の端は消去に使用されます。 これら 2 つの端は、2 つのカーソルに対応します。 Cursor クラスは System.Windows.Forms.Cursor と混同されません。

タブレット PC では、通常、カーソルは書き込みまたは消去に使用するように定義されます。 アプリケーションでこの機能が有効な場合、カーソルによってロールが変更される可能性があります。 一部のタブレット PC デバイスでは、複数のペンを使用できます。 各カーソルには、システムで一意のカーソル ID が関連付けられています。 カーソルには、0 個以上のボタンを関連付けることができます。 これらのボタンは、CursorButton オブジェクトとしてアプリケーションに提供されます。 アプリケーションは、特定のカーソルに対して特定 の DrawingAttributes オブジェクトを提供できます。

Drawing Attributes オブジェクト

DrawingAttributes オブジェクトは、インクの既知のセットを描画する方法を記述します。 DrawingAttributes オブジェクトには、ColorWidthPenTip などの基本的なプロパティが含まれます。 また、興味深い効果を提供したり、インクの読みやすさを向上させたりできる、可変透明度やベジエスムージングなどの高度なパラメーターを含めることもできます。

PenInputPanel オブジェクト

Note

PenInputPanel クラスは非推奨になりました。 PenInputPanel クラスは TextInputPanel クラスに置き換えられました。

 

PenInputPanel オブジェクトを使用すると、インプレース ペン入力をアプリケーションに簡単に追加できます。 PenInputPanel は、タブレット PC 入力パネル機能を既存のコントロールに追加できるアタッチ可能なオブジェクトとして使用できます。 ユーザー インターフェイスは、主に現在の入力言語によって義務付けられています。 PenInputPanel の既定の入力方法 (手書き入力またはキーボード) を選択できます。 エンド ユーザーは、ユーザー インターフェイスのボタンを使用して入力メソッドを切り替えることができます。

InkCollector クラス (C++)

InkOverlay クラス (C++)

Microsoft.Ink 名前空間