IInkStrokeDisp
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
単一のインクストロークを表します。ストロークとは、特定のインクの筆跡の座標とプロパティを表す、デジタイザーが取得したプロパティとポイントデータの集合です。
解説(Remarks)
このインターフェースを実装するクラスを独自に定義した場合、そのクラスは Tablet PC のアプリケーションプログラミングインターフェース (API) と正しく連携しません。
メソッド 33
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
オブジェクトの識別子を取得します。(IInkStrokeDisp.get_Id)
| ID | INT* | out | ストロークを一意に識別する ID を受け取るポインタである。 |
解説(Remarks)
オブジェクトの識別子は変化しません。
ストロークのベジェ近似を表す制御点の配列を取得します。
| Points | VARIANT* | out | ストロークを表すベジエ制御点の配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
BezierPoints プロパティが返す制御点は、元のストロークの滑らかな近似を提供するものであり、必ずしもストローク上に位置するとは限りません。
インクを描画する際に適用する描画属性を取得または設定します。(IInkStrokeDisp.get_DrawingAttributes)
| DrawAttrs | IInkDrawingAttributes** | out | このストロークに適用されている描画属性を受け取るポインタである。 |
解説(Remarks)
描画属性は、ストロークの外観を指定します。たとえば、ペンのスタイルや色を指定できます。
カーソルは、接触する InkCollector ごとに異なる描画属性を持つことができます。カーソルに描画属性を指定しない場合は、InkCollector オブジェクトの既定の描画属性が使用されます。これらの既定属性は、InkCollector オブジェクトの DefaultDrawingAttributes プロパティで設定します。
DrawingAttributes プロパティを繰り返し呼び出しても、変更されるのは新しいストロークの描画属性だけです。すでに収集済みのストロークや収集中のストロークには適用されません。
| DrawAttrs | IInkDrawingAttributes* | inoptional | このストロークに適用する描画属性オブジェクトへのポインタである。 |
ストロークの親となる InkDisp オブジェクトを取得します。
| Ink | IInkDisp** | out | このストロークが属するインク オブジェクトを受け取るポインタである。 |
解説(Remarks)
ストロークは、必ず 1 つの InkDisp オブジェクトにのみ含まれている必要があります。
オブジェクトに格納されている、アプリケーション定義データのコレクションを取得します。(IInkStrokeDisp.get_ExtendedProperties)
| Properties | IInkExtendedProperties** | out | このストロークに関連付けられた拡張プロパティのコレクションを受け取るポインタである。 |
解説(Remarks)
アプリケーションは ExtendedProperties プロパティを使用して、オブジェクトに格納されたカスタムデータにアクセスできます。このカスタムデータは、オブジェクトと共に自動的にシリアル化されます。
IInkStrokeDisp オブジェクトのカスプのインデックスを格納した配列を取得します。
| Cusps | VARIANT* | out | 折れ線近似におけるストロークの尖点(カスプ)の配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
PolylineCusps プロパティが返す配列は、GetPoints メソッドが返す配列へのインデックスです。PolylineCusps プロパティの各インデックスは、GetPoints メソッドが返す配列のうち、ストロークの点のカスプに当たる点に対応します。
カスプ (cusp) とは、筆記の方向が不連続に変化するストローク上の点です。たとえば、ストロークが大文字の「L」を表す場合、このプロパティは 3 つのカスプを返します。うち 2 つはストロークの最初と最後の制御点に対応し、3 つ目は「L」の角を表します。
カスプの位置は、そのカスプを GetPoints メソッドが返す配列へのインデックスとして使用することで求められます。
ストロークのベジェ近似におけるカスプのインデックスを格納した配列を取得します。
| Cusps | VARIANT* | out | ベジエ表現におけるストロークの尖点(カスプ)の配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
次のコードは、IInkStrokeDisp である theStroke のベジェカスプの x 値と y 値を抽出し、BezierCuspValues という 2 次元配列に格納します。
ストロークの自己交差点を取得します。
| Intersections | VARIANT* | out | ストローク自身の交差点の配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
自己交差点とは、ストロークがそれ自身と交差する点のことです。
浮動小数点インデックスとは、ストローク内の 2 点の間のどこかの位置を表す浮動小数点値です。たとえば、0.0 がストロークの最初の点、1.0 が 2 番目の点を表す場合、0.5 は最初の点と 2 番目の点のちょうど中間を表します。同様に、37.25 という浮動小数点インデックス値は、ストロークの 37 番目の点と 38 番目の点を結ぶ線分上の 25 パーセントの位置を表します。
IInkStrokeDisp オブジェクトで受信したパケットの数を取得します。
| plCount | INT* | out | ストロークを構成するパケットの個数を受け取るポインタである。 |
パケットのサイズ (バイト単位) を取得します。
| plSize | INT* | out | 1 パケットあたりのデータ サイズ(プロパティ数)を受け取るポインタである。 |
IInkStrokeDisp オブジェクトに格納されているパケットデータの種類を示す、グローバル一意識別子 (GUID) の配列を取得します。
| PacketDescription | VARIANT* | out | パケットを構成する各プロパティの GUID 配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
利用できるパケットプロパティの完全な一覧については、PacketProperty 定数を参照してください。
特定のストロークがインクから削除されているかどうかを示す値を取得します。
| Deleted | VARIANT_BOOL* | out | ストロークが削除済みであるかどうかを受け取る VARIANT_BOOL へのポインタである。 |
InkDisp オブジェクト内のすべてのストローク、個々のストローク、または InkStrokes コレクションの境界ボックスを、インクスペース座標で取得します。(IInkStrokeDisp.GetBoundingBox)
| BoundingBoxMode | InkBoundingBoxMode | in | 省略可能。境界ボックスの計算に使用するストロークの特性を指定します。既定値は -1 で、ストロークのすべての特性を使用して境界ボックスを決定することを示します。 境界ボックスの計算にストロークの特性を使用する方法の詳細については、BoundingBoxMode 列挙型を参照してください。 |
| Rectangle | IInkRectangle** | out | このメソッドが戻るとき、InkDisp オブジェクト、IInkStrokeDisp オブジェクト、または InkStrokes コレクションの境界ボックスを定義する矩形へのポインターが格納されます。 メモ IInkStrokeDisp オブジェクトの場合、返される境界ボックスはストロークの境界ボックスのコピーであるため、返された境界ボックスを変更してもストロークの位置には影響しません。
|
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターまたはプロパティの型が想定外です。 | |
|
InkRectangle オブジェクトが登録されていません。 |
解説(Remarks)
境界ボックスがペン幅の影響を受ける場合、この幅は InkRenderer のビュー変換に合わせて拡大縮小されます。具体的には、ペン幅にビュー変換の行列式の平方根を乗じます。
この IInkStrokeDisp オブジェクトが、特定の InkStrokes コレクション内の他の IInkStrokeDisp オブジェクトと交差する点を取得します。
| Strokes | IInkStrokes* | inoptional | このストロークとの交差点を計算する対象となるストロークのコレクション。NULL の場合は、InkDisp オブジェクト内のすべてのストロークが使用されます。 メモ 対象のストロークコレクションは、交差を調べるストロークと同じ InkDisp オブジェクトに属している必要があります。同じ InkDisp オブジェクトのものでない場合は、E_INK_MISMATCHED_INK_OBJECT が返されます (以下の「HRESULT value」を参照)。FindIntersections メソッドは、対象のストロークコレクションが同じ InkDisp オブジェクトに属することを要求する唯一の Tablet PC アプリケーションプログラミングインターフェース (API) です。
|
| Intersections | VARIANT* | out | このメソッドが戻るとき、このストロークが対象のストロークコレクション内のストロークと交差する位置を示す浮動小数点インデックス値の配列が格納されます。 浮動小数点インデックスとは、ストローク内の 2 点の間のどこかの位置を表す浮動小数点値です。たとえば、0.0 がストロークの最初の点、1.0 が 2 番目の点を表す場合、0.5 は最初の点と 2 番目の点のちょうど中間を表します。同様に、37.25 という浮動小数点インデックス値は、ストロークの 37 番目の点と 38 番目の点を結ぶ線分上の 25 パーセントの位置を表します。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| IInkStrokeDisp ハンドルヘルパーオブジェクトを割り当てられません。 | |
| パラメーターまたはプロパティの型が想定外です。 | |
|
メソッド内で例外が発生しました。 |
|
strokes パラメーターが、互換性のある InkDisp オブジェクトを指していません。 |
|
InkStrokes コレクションの InkDisp オブジェクトと、この IInkStrokeDisp オブジェクトが一致しません。 |
解説(Remarks)
このメソッドで判定できるのは交差点のみです。
IInkStrokeDisp オブジェクトが指定した矩形と交差する点を検出します。
| Rectangle | IInkRectangle* | inoptional | ヒットテスト領域を表す、インクスペース座標での矩形。 |
| Intersections | VARIANT* | out | このメソッドが戻るとき、ストロークが rectangle と交差する位置を示す VARIANT 配列が格納されます。開始位置の浮動小数点インデックスは偶数番目の要素に、終了位置の浮動小数点インデックスは奇数番目の要素に格納されます。最初のインデックスの組が最初の交差を表します。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| Stroke ハンドラーヘルパーオブジェクトを割り当てられません。 | |
| パラメーターまたはプロパティの型が想定外です。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドは、ストロークが指定した矩形と交差する位置を示す配列を返します。矩形と交差するストロークの各セグメントは、開始インデックスと終了インデックスが交互に並ぶ 1 組のインデックスとして表されます。
ストロークがテスト矩形の内側から始まる場合、最初のインデックスには -1 が設定されます。ストロークがテスト矩形の内側で終わる場合、最後のインデックスには -1 が設定されます。ストローク全体がテスト矩形の外側にある場合は、空の配列が返されます。たとえば、ストロークがテスト矩形の内側から始まり、矩形の境界を出て、再び内側に戻り、再度外に出る場合、GetRectangleIntersections メソッドは、矩形内に含まれる 2 つのセグメントを表す {-1, 1.4, 5.5, 10.1} のような値を返すことがあります。
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションのうち、矩形の外側にある部分を削除します。(IInkStrokeDisp.Clip)
| Rectangle | IInkRectangle* | inoptional | ストロークをクリップする基準となる矩形を指定します。この矩形の外側の部分がクリップされます。矩形はインクスペース座標で指定します。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
InkDisp オブジェクトが登録されていません。 |
| クリップ矩形が無効です。 | |
|
メソッド内で例外が発生しました。 |
| 原因不明のエラーが発生しました。 |
解説(Remarks)
InkDisp オブジェクトの場合、矩形と交差するすべてのストロークは交差点で分割されます。矩形の外側にあるストロークの部分はすべて InkDisp オブジェクトから削除されます。このメソッドは、ストロークが矩形と交差する位置に新しい点を追加することがあります。InkDisp オブジェクトに対して Clip メソッドを呼び出した後、InkDisp オブジェクトのストロークコレクション内のストローク ID は一意であることが保証されますが、その他の情報が保持されることは保証されません。
このメソッドは、クリップ時にペン幅を考慮しません。クリップされるのは実際の インク またはストロークのデータのみです。
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションの場合、Clip メソッドは親の InkDisp オブジェクトを更新します。InkDisp オブジェクトからインクが削除されると、その InkDisp オブジェクトに対して定義されている IInkStrokeDisp オブジェクトや InkStrokes コレクションが無効になることがあります。
インクデータの詳細については、「インクデータ」を参照してください。
ストロークが指定した円の内側に完全に含まれるか、またはその円と交差するかを判定します。
| X | INT | in | ヒットテスト用の円の中心の x 座標 (インクスペース座標)。 |
| Y | INT | in | ヒットテスト用の円の中心の y 座標 (インクスペース座標)。 |
| Radius | FLOAT | in | ヒットテストに使用する円の半径。 |
| Intersects | VARIANT_BOOL* | out | ストロークが円と交差するか、円の内側にある場合は VARIANT_TRUE。それ以外の場合は VARIANT_FALSE |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターまたはプロパティの型が想定外です。 |
指定した点に最も近いストローク上の位置を検出し、その点からストロークまでの距離を返します。すべてインクスペース座標で扱います。
| X | INT | in | テストする点の、インクスペースでの x 座標。 |
| Y | INT | in | テストする点の、インクスペースでの y 座標。 |
| Distance | FLOAT* | inout | 省略可能。点からストロークまでの距離。このパラメーターには NULL を指定できます。既定値は 0 です。 |
| Point | FLOAT* | out | このメソッドが戻るとき、ストローク上の最も近い位置を表す浮動小数点インデックス値が格納されます。 浮動小数点インデックスとは、ストローク内の 2 点の間のどこかの位置を表す浮動小数点値です。たとえば、0.0 がストロークの最初の点、1.0 が 2 番目の点を表す場合、0.5 は最初の点と 2 番目の点のちょうど中間を表します。同様に、37.25 という浮動小数点インデックス値は、ストロークの 37 番目の点と 38 番目の点を結ぶ線分上の 25 パーセントの位置を表します。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 原因不明のエラーが発生しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
distance パラメーターは、点からストロークの外形までの距離を表します。これは、 2 点間の距離からストロークの幅の半分を引いた値です。
指定した位置でストロークを分割します。
| SplitAt | FLOAT | in | ストロークを分割する位置を表す浮動小数点インデックス値。 メモ 浮動小数点インデックスとは、ストローク内の 2 点の間のどこかの位置を表す浮動小数点値です。たとえば、0.0 がストロークの最初の点、1.0 が 2 番目の点を表す場合、0.5 は最初の点と 2 番目の点のちょうど中間を表します。同様に、37.25 という浮動小数点インデックス値は、ストロークの 37 番目の点と 38 番目の点を結ぶ線分上の 25 パーセントの位置を表します。
|
| NewStroke | IInkStrokeDisp** | out | このメソッドが戻るとき、分割操作によって作成された新しい IInkStrokeDisp オブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| Stroke ハンドラーヘルパーオブジェクトを割り当てられません。 | |
| パラメーターが無効です。 | |
| パラメーターまたはプロパティの型が想定外です。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドは、ストロークセット内の元のストロークの直後に新しいストロークを挿入し、以降のストロークインデックスを番号付け直します。
IInkStrokeDisp を分割すると、ストロークの前半部分は元の IInkStrokeDisp の ID をそのまま保持します。IInkStrokeDisp の後半部分は、既存の最大の IInkStrokeDisp ID より 1 大きい ID を持つ新しい IInkStrokeDisp になります。元の IInkStrokeDisp が (Ink.Strokes 以外の) InkStrokes コレクションに含まれていた場合、そのコレクションに残るのは前半部分のみです。
指定したパケット記述の種類に対するメトリックを取得します。
| PropertyName | LPWSTR | in | メトリックを取得するプロパティを識別する、PacketProperty 定数のグローバル一意識別子 (GUID)。 BSTR データ型の詳細については、「COM ライブラリの使用」を参照してください。 |
| Minimum | INT* | out | このプロパティについてタブレットが報告する最小値 (論理単位)。たとえば、x 値を 0 から 9000 の範囲で報告するタブレットの論理最小値は 0 です。 |
| Maximum | INT* | out | このプロパティについてタブレットが報告する最大値 (論理単位)。たとえば、x 値を 0 から 9000 の範囲で報告するタブレットの論理最大値は 9000 です。 |
| Units | TabletPropertyMetricUnit* | out | インチや度など、プロパティの物理単位。プロパティの単位の一覧については、TabletPropertyMetricUnit 列挙型を参照してください。 |
| Resolution | FLOAT* | out | units メンバーに対する解像度 (増分値)。たとえば、400 dpi (1 インチあたりのドット数) で報告するタブレットの resolution 値は 400 になります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| この要求を完了するために必要なメモリを割り当てられません。 | |
| GUID の形式が無効です。 | |
| そのプロパティはコレクションに存在しません。 | |
|
処理中に例外が発生しました。 |
ストロークを構成する点を取得します。
| Index | INT | in | 省略可能。ストロークを構成する点の配列内の開始インデックス。既定値の ISC_FirstElement (InkSelectionConstants 列挙型で定義) は最初の点を指定します。 |
| Count | INT | in | 省略可能。返す点の数。既定値の ISC_AllElements (InkSelectionConstants 列挙型で定義) は、ストロークデータを構成するすべての点を指定します。 |
| Points | VARIANT* | out | このメソッドが戻るとき、ストロークの点の配列が格納されます。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 点用のメモリを割り当てられません。 | |
| インデックスが無効です (範囲外)。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターまたはプロパティの型が想定外です。 |
X、Y 値の配列を使用して IInkStrokeDisp の点を設定します。
| Points | VARIANT | in | index 以降のストロークの点を置き換える新しい点の配列。これは Long 型の配列を含む VARIANT で、点は x0, y0, x1, y1, x2, y2 のように値が交互に並ぶ形式で表されます。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
| Index | INT | in | 省略可能。変更するストローク内の最初の点の、0 から始まるインデックス。既定値の ISC_FirstElement (ItemSelectionConstants 列挙型で定義) は、ストロークの最初の点を変更することを指定します。 |
| Count | INT | in | 省略可能。変更するストローク内の点の数。既定値の ISC_AllElements (ItemSelectionConstants 列挙型で定義) は、ストローク内のすべての点を変更することを指定します。 |
| NumberOfPointsSet | INT* | out | このメソッドが戻るとき、実際に設定されたパケットの数が格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| index が無効 (範囲外) であるか、points パラメーターが正しい形式ではありませんでした。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドは、ストローク内の点の数を変更しません。ストローク内の点の数を変更するには、新しいストロークを作成するか、ストロークを分割する必要があります。
このメソッドではストロークを切り詰めることはできません。点の配列の要素数がストロークの点の数より少ない場合、ストロークの残りの点は変更されません。
このメソッドではストロークを拡張することもできません。点の配列の要素数がストロークの点の数より多い場合、余分な点は使用されません。カウントが配列内の点の数を超える場合は、配列内の点の数だけが変更されます。
SetPoints を呼び出した後にストロークを描画するには、InvalidateRect 関数を呼び出してください。
IInkStrokeDisp オブジェクト内の指定した範囲のパケットについて、パケットデータを取得します。
| Index | INT | in | 省略可能。ストローク内のパケットを指す、0 から始まるインデックスの開始位置。既定値の ISC_FirstElement (InkSelectionConstants 列挙型で定義) は最初のパケットを指定します。 |
| Count | INT | in | 省略可能。startingIndex パラメーターで指定したパケットから数えて、返すポイントパケットデータセットの数。既定値の ISC_AllElements (InkSelectionConstants 列挙型で定義) は、ストロークデータを構成するすべての点を指定します。 |
| PacketData | VARIANT* | out | このメソッドが戻るとき、ストローク内の要求された点のパケットデータを含む符号付き 32 ビット整数の配列が格納されます。配列には、1 番目の点のデータ、2 番目の点のデータ…という順で格納されます。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 原因不明のエラーが発生しました。 | |
| Stroke ハンドラーヘルパーオブジェクトを割り当てられません。 | |
| ストロークが無効です。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターまたはプロパティの型が想定外です。 |
解説(Remarks)
ストローク内のパケット数が startingIndex パラメーターと pointCount パラメーターの合計より少ない場合、返されるデータ配列には要求した数より少ない点のパケット情報が含まれます。
パケットデータの記述を取得するには、ストロークの PacketDescription プロパティを使用します。このプロパティは、GetPacketData メソッドが各点についてどのプロパティ値を返すかを示す、グローバル一意識別子 (GUID) の配列を返します。利用できるパケットプロパティの GUID は PacketProperty 定数に含まれています。
ストローク内の 1 つ以上のパケットから、指定したパケットプロパティのデータを取得します。
| PropertyName | LPWSTR | in | どのパケットデータを取得するかを選択するために使用された、PacketProperty 定数の識別子。 BSTR データ型の詳細については、「COM ライブラリの使用」を参照してください。 |
| Index | INT | in | 省略可能。ストローク内のパケットを指す、0 から始まるインデックスの開始位置。既定値の ISC_FirstElement (InkSelectionConstants 列挙型で定義) は最初のパケットを指定します。 |
| Count | INT | in | 省略可能。ストロークデータを構成する点の数。既定値の ISC_AllElements (InkSelectionConstants 列挙型で定義) は、ストロークデータを構成するすべての点を指定します。 |
| PacketValues | VARIANT* | out | このメソッドが戻るとき、ストロークから要求された各点について、指定された PacketProperty の値を示す符号付き 32 ビット整数の配列が格納されます。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| ストロークが無効です。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 原因不明のエラーが発生しました。 | |
| パケットデータ配列を割り当てられません。 | |
| インデックス、カウント、またはパケットプロパティが無効です。 | |
|
メソッド内で例外が発生しました。 |
| GUID の形式が無効です。 |
解説(Remarks)
特定のパケットプロパティは、ある IInkStrokeDisp オブジェクトでは利用できない場合があります。Tablet PC には、ユーザー入力用のタブレットが複数接続されていることがあります。InkTablets コレクションには、Tablet PC に接続されているすべてのタブレットの一覧が含まれます。特定のパケットプロパティが、特定の IInkTablet オブジェクトで、または利用可能なすべてのタブレットでサポートされているかを判定するには、IsPacketPropertySupported メソッドを使用します。また、新しいストロークでどのパケットプロパティを収集するかを制御するには、インクコレクターの DesiredPacketDescription プロパティを使用します。
特定のプロパティのパケット値を変更します。
| bstrPropertyName | LPWSTR | in | どのパケットデータを設定するかを選択するために使用する、PacketProperty 定数のグローバル一意識別子 (GUID)。このストロークに定義されているプロパティを確認するには PacketDescription を使用します。 |
| PacketValues | VARIANT | in | パケットデータ値の配列。配列内の値のいずれかがプロパティの最小値または最大値の範囲外である場合、このメソッドは失敗します。プロパティの値の範囲を確認するには、GetPacketDescriptionPropertyMetrics メソッドを呼び出します。 |
| Index | INT | in | 省略可能。変更するパケットの開始インデックス。既定値の ISC_FirstElement (ItemSelectionConstants 列挙型で定義) は最初のパケットを指定します。 |
| Count | INT | in | 省略可能。変更するストローク内のパケット数と、PacketValues 内の値の数を指定します。既定値の ISC_AllElements (ItemSelectionConstants 列挙型で定義) は、すべてのパケットを変更することを指定します。 |
| NumberOfPacketsSet | INT* | out | このメソッドが戻るとき、実際に設定されたパケットの数が格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| GUID の形式が無効です。 | |
| VARIANT、インデックス (範囲外)、またはプロパティ GUID が無効です。 | |
|
メソッド内で例外が発生しました。 |
InkDisp オブジェクト内のすべてのストローク、個々のストローク、または InkStrokes コレクションの境界ボックスを、インクスペース座標で取得します。
| FittingError | INT | in | 省略可能。ベジェ制御点とストロークの点との間の最大距離 (精度)。インクスペース単位で指定します。これは曲線フィッティングの誤差レベルとも呼ばれます。既定値は 0 です。 |
| FlattenedBezierPoints | VARIANT* | out | このメソッドが戻るとき、IInkStrokeDisp オブジェクトのベジェ曲線表現を描画するのに使用された点を示す点の配列が格納されます。VARIANT の結果には、ベジェ点が x1, y1, x2, y2 のような形式で並ぶ配列が含まれます。 VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| ストロークが無効です。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 原因不明のエラーが発生しました。 | |
| Stroke ハンドラーヘルパーオブジェクトを割り当てられません。 | |
| フィッティング誤差が範囲外でした。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターまたはプロパティの型が想定外です。 |
解説(Remarks)
fittingError パラメーターは、0 から 500 の範囲で設定するのが理想的です。値が 500 を超えると、描画時にストロークが歪んだり粗く見えたりすることがあります。フィッティング誤差レベルを 0 に設定するとストロークは最も滑らかになりますが、描画パフォーマンスは最も低下します。
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションに線形変換を適用します。この変換には、拡大縮小、回転、平行移動、およびそれらの組み合わせを指定できます。(IInkStrokeDisp.Transform)
| Transform | IInkTransform* | inoptional | ストロークに適用する変換。(これは InkTransform オブジェクトで、XFORM 構造体に対応します。) この変換は点とペン幅の両方に適用されます (ApplyOnPenWidth が VARIANT_TRUE の場合)。 |
| ApplyOnPenWidth | VARIANT_BOOL | in | 省略可能。ストロークの InkDrawingAttributes にあるインクの幅にも変換を適用する場合は VARIANT_TRUE。それ以外の場合は VARIANT_FALSE。既定値は VARIANT_FALSE です。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 引数が無効です。 | |
| パラメーターまたはプロパティの型が想定外です。 | |
|
メソッド内で例外が発生しました。 |
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションを、指定した InkRectangle オブジェクトに収まるように拡大縮小します。(IInkStrokeDisp.ScaleToRectangle)
| Rectangle | IInkRectangle* | inoptional | ストロークまたはストロークコレクションを拡大縮小して合わせる、インクスペース上の InkRectangle。ストロークの境界ボックスがこの矩形に一致するよう、ストロークは拡大縮小および平行移動されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内で例外が発生しました。 |
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションのインクに平行移動を適用します。(IInkStrokeDisp.Move)
| HorizontalComponent | FLOAT | in | ビュー変換を X 方向に平行移動させる距離 (インクスペース座標)。 |
| VerticalComponent | FLOAT | in | ビュー変換を Y 方向に平行移動させる距離 (インクスペース座標)。 |
戻り値
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
回転の中心点を基準に、指定した角度 (度単位) でインクを回転させます。(IInkStrokeDisp.Rotate)
| Degrees | FLOAT | in | 時計回りに回転させる角度 (度)。 |
| x | FLOAT | in | 省略可能。回転の中心となる点の x 座標 (インクスペース座標)。既定は原点です。既定値は原点 (0) です。 |
| y | FLOAT | in | 省略可能。回転の中心となる点の y 座標 (インクスペース座標)。既定値は原点 (0) です。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
指定した水平方向および垂直方向の係数で、ストロークのインクをせん断 (シア) させます。(IInkStrokeDisp.Shear)
| HorizontalMultiplier | FLOAT | in | せん断の水平方向の係数。 |
| VerticalMultiplier | FLOAT | in | せん断の垂直方向の係数。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドで適用される変換が純粋なせん断になるのは、いずれかのパラメーターが 0 の場合だけです。原点にある矩形に適用する場合、shearY 係数が 0 のとき、この変換は下辺を矩形の高さの shearX 倍だけ水平に移動させます。shearX 係数が 0 のときは、右辺を矩形の幅の shearY 倍だけ垂直に移動させます。
指定した水平方向および垂直方向の係数を、変換またはインクに適用します。(IInkStrokeDisp.ScaleTransform)
| HorizontalMultiplier | FLOAT | in | 変換の水平方向を拡大縮小する係数。 |
| VerticalMultiplier | FLOAT | in | 変換の垂直方向を拡大縮小する係数。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
IInkStrokeDisp クラスおよび InkStrokes クラスの場合、このメソッドは原点を基準としてストローク内の点を拡大縮小します。したがって、HorizontalMultiplier パラメーターが 2.0 の場合、ストロークの幅は 2 倍になり、原点からの水平方向の距離も 2 倍になります。ストロークの相対位置を制御するには、このメソッドを Move メソッドと併用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkStrokeDisp "{43242FEA-91D1-4A72-963E-FBB91829CFA2}" #usecom global IInkStrokeDisp IID_IInkStrokeDisp "{}" #comfunc global IInkStrokeDisp_get_ID 7 var #comfunc global IInkStrokeDisp_get_BezierPoints 8 var #comfunc global IInkStrokeDisp_get_DrawingAttributes 9 sptr #comfunc global IInkStrokeDisp_putref_DrawingAttributes 10 sptr #comfunc global IInkStrokeDisp_get_Ink 11 sptr #comfunc global IInkStrokeDisp_get_ExtendedProperties 12 sptr #comfunc global IInkStrokeDisp_get_PolylineCusps 13 var #comfunc global IInkStrokeDisp_get_BezierCusps 14 var #comfunc global IInkStrokeDisp_get_SelfIntersections 15 var #comfunc global IInkStrokeDisp_get_PacketCount 16 var #comfunc global IInkStrokeDisp_get_PacketSize 17 var #comfunc global IInkStrokeDisp_get_PacketDescription 18 var #comfunc global IInkStrokeDisp_get_Deleted 19 var #comfunc global IInkStrokeDisp_GetBoundingBox 20 int,sptr #comfunc global IInkStrokeDisp_FindIntersections 21 sptr,var #comfunc global IInkStrokeDisp_GetRectangleIntersections 22 sptr,var #comfunc global IInkStrokeDisp_Clip 23 sptr #comfunc global IInkStrokeDisp_HitTestCircle 24 int,int,float,var #comfunc global IInkStrokeDisp_NearestPoint 25 int,int,var,var #comfunc global IInkStrokeDisp_Split 26 float,sptr #comfunc global IInkStrokeDisp_GetPacketDescriptionPropertyMetrics 27 wstr,var,var,var,var #comfunc global IInkStrokeDisp_GetPoints 28 int,int,var #comfunc global IInkStrokeDisp_SetPoints 29 int,int,int,var #comfunc global IInkStrokeDisp_GetPacketData 30 int,int,var #comfunc global IInkStrokeDisp_GetPacketValuesByProperty 31 wstr,int,int,var #comfunc global IInkStrokeDisp_SetPacketValuesByProperty 32 wstr,int,int,int,var #comfunc global IInkStrokeDisp_GetFlattenedBezierPoints 33 int,var #comfunc global IInkStrokeDisp_Transform 34 sptr,int #comfunc global IInkStrokeDisp_ScaleToRectangle 35 sptr #comfunc global IInkStrokeDisp_Move 36 float,float #comfunc global IInkStrokeDisp_Rotate 37 float,float,float #comfunc global IInkStrokeDisp_Shear 38 float,float #comfunc global IInkStrokeDisp_ScaleTransform 39 float,float ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkStrokeDisp "{43242FEA-91D1-4A72-963E-FBB91829CFA2}" #usecom global IInkStrokeDisp IID_IInkStrokeDisp "{}" #comfunc global IInkStrokeDisp_get_ID 7 sptr #comfunc global IInkStrokeDisp_get_BezierPoints 8 sptr #comfunc global IInkStrokeDisp_get_DrawingAttributes 9 sptr #comfunc global IInkStrokeDisp_putref_DrawingAttributes 10 sptr #comfunc global IInkStrokeDisp_get_Ink 11 sptr #comfunc global IInkStrokeDisp_get_ExtendedProperties 12 sptr #comfunc global IInkStrokeDisp_get_PolylineCusps 13 sptr #comfunc global IInkStrokeDisp_get_BezierCusps 14 sptr #comfunc global IInkStrokeDisp_get_SelfIntersections 15 sptr #comfunc global IInkStrokeDisp_get_PacketCount 16 sptr #comfunc global IInkStrokeDisp_get_PacketSize 17 sptr #comfunc global IInkStrokeDisp_get_PacketDescription 18 sptr #comfunc global IInkStrokeDisp_get_Deleted 19 sptr #comfunc global IInkStrokeDisp_GetBoundingBox 20 int,sptr #comfunc global IInkStrokeDisp_FindIntersections 21 sptr,sptr #comfunc global IInkStrokeDisp_GetRectangleIntersections 22 sptr,sptr #comfunc global IInkStrokeDisp_Clip 23 sptr #comfunc global IInkStrokeDisp_HitTestCircle 24 int,int,float,sptr #comfunc global IInkStrokeDisp_NearestPoint 25 int,int,sptr,sptr #comfunc global IInkStrokeDisp_Split 26 float,sptr #comfunc global IInkStrokeDisp_GetPacketDescriptionPropertyMetrics 27 wstr,sptr,sptr,sptr,sptr #comfunc global IInkStrokeDisp_GetPoints 28 int,int,sptr #comfunc global IInkStrokeDisp_SetPoints 29 int,int,int,sptr #comfunc global IInkStrokeDisp_GetPacketData 30 int,int,sptr #comfunc global IInkStrokeDisp_GetPacketValuesByProperty 31 wstr,int,int,sptr #comfunc global IInkStrokeDisp_SetPacketValuesByProperty 32 wstr,int,int,int,sptr #comfunc global IInkStrokeDisp_GetFlattenedBezierPoints 33 int,sptr #comfunc global IInkStrokeDisp_Transform 34 sptr,int #comfunc global IInkStrokeDisp_ScaleToRectangle 35 sptr #comfunc global IInkStrokeDisp_Move 36 float,float #comfunc global IInkStrokeDisp_Rotate 37 float,float,float #comfunc global IInkStrokeDisp_Shear 38 float,float #comfunc global IInkStrokeDisp_ScaleTransform 39 float,float ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。