インク データ

インクが収集されると、アプリケーションはそのデータを管理、操作、および他のメディアに転送できます。 インクの選択、コピー、移動、保存、表示、変更のアクションは、 Ink オブジェクトとその含まれているメンバー ( Strokes コレクションや Stroke オブジェクトなど) で行われます。

Note

スタイラスReal-Time使用すると、アプリケーションは独自の形式 (ストロークの保存など) でデータを維持することを選択できます。

 

インク、ストローク、パケット

Ink オブジェクトは、InkCollector オブジェクトから収集された入力を管理、操作、および格納する基本的なデータ型です。 Ink オブジェクトには、1 つ以上の Stroke オブジェクトと、それらのストロークを管理および操作するための一般的なメソッドとプロパティが含まれています。 ストロークは、1 つのペンダウン、ペン移動、およびペンアップ シーケンスでキャプチャされるデータのセットとして定義されます。 ストローク データには、パケットのコレクションが含まれています。 パケットは、タブレット デバイスが各サンプル ポイントで送信するデータのセットです。 このデータには、座標、筆圧、ペンの角度、ハードウェアが送信できるその他の情報が含まれます。 Stroke オブジェクトの PacketDescription プロパティは、Tablet によって生成されるパケットを表します。

Ink オブジェクトの Strokes プロパティを使用して、Ink オブジェクト内のストロークのスナップショットを取得できます。 Strokes プロパティは、Strokes プロパティが読み取られた時点での Ink オブジェクト内のストロークへの参照のコレクションです。 その後、 Ink オブジェクトにストロークが追加または削除された場合、以前に取得した Strokes コレクションは更新されません。 さらに、 Strokes プロパティは値であり、任意の値と同様に、変数に割り当てられている場合を除き、スコープ外になります。

Strokes プロパティと Ink オブジェクトの同期を維持するには、Strokes コレクションのStrokesAdded イベントと StrokesRemoved イベントのイベント ハンドラーでラップします。 ハンドラーは、いずれかのイベントが発生したときに Strokes プロパティの新しいコピーを取得する必要があります。 イベントが発生する前にスコープ外の Strokes コレクションにイベント ハンドラーを追加しないように注意してください。

この例では、 theAddedStrokesIDs ハンドラーの strokes プロパティの新しいコピーで更新されていることに StrokesAdded_Event 注意してください。

public void StrokesAdded_Event(object sender, StrokesEventArgs e)
{
    int [] theAddedStrokesIDs = e.StrokeIds;
    theListBox.Items.Clear();
    foreach (int i in theAddedStrokesIDs)
    {
        theListBox.Items.Add("Added Stroke ID: " + i.ToString());
    }
}

PacketDescription プロパティ

Ink オブジェクトの PacketDescription プロパティは、アプリケーションがタブレット PC デバイスから取得する各パケットの情報セットを定義します。 通常、この情報には座標が含まれますが、筆圧やペンの角度など、(タブレット PC デジタイザーの機能に応じて) はるかに詳細な情報を含めることができます。 インクを収集する前に InkCollector オブジェクトまたは InkOverlay オブジェクトにパケットの説明を設定することで (DesiredPacketDescription プロパティを使用)、受け取るタブレット PC デバイスのプロパティを完全に制御できます。

Extended Properties

拡張プロパティは、アプリケーション定義データを Ink やその他のオブジェクトにアタッチするためのメカニズムを提供します。 拡張プロパティの詳細については、 ExtendedProperties コレクションを参照してください。

インク レンダリング

Renderer オブジェクトは、Ink のレンダリングを担当します。 適切なタブレット コンテキストを指定すると、 Renderer オブジェクトは、インク空間座標をピクセルにマップし、ビュー変換を適用し、画面とプリンターにインクを表示できます。 Draw メソッドと DrawStroke メソッドは、インクをレンダリングするための主要なメソッドです。 ウィンドウにインクを表示する方法の詳細については、「 Renderer オブジェクト」を参照してください。

通常、ストロークはペンが描画サーフェイスに下がると開始され、ペンが上がると終了します。 ストローク内では、ピーク、角度、および方向の根本的な変化をカスプと呼びます。 ストロークのエンドポイントもカスプと見なされます。 たとえば、大文字の "L" には、中央に 1 つ、両端に 1 つずつ、3 つのカスプがあります。

ストロークを入力すると、通常はベジェ(またはポリライン)カーブを使用してスムージングされ、レンダリングされます。 ベジェ曲線は、カスプを小さなループに変える可能性があります。 たとえば、筆記体文字 "i" のピークは、筆記体 "e" に似た形で平滑化される場合があります。 これを防ぐために、Microsoft レンダラーには、カスプを異なる方法で処理する "ベジェ前" フェーズがあります。

また、Cusps を使用して Stroke オブジェクトを消去可能な単位に分割することもできます。 たとえば、大文字 "L" の垂直側を選択すると、その辺だけが消去されます。 消去するストロークの部分は、2 つのカスプの間の部分になります。