IInkDisp::NearestPoint メソッド (msinkaut.h)

既知のポイントに最も近い InkDisp オブジェクト内の IInkStrokeDisp を取得します。必要に応じて、最も近いポイントのインデックスと、指定したポイントからのストロークまでの距離を指定します。

構文

HRESULT NearestPoint(
  [in]                long           X,
  [in]                long           Y,
  [in, out, optional] float          *PointOnStroke,
  [in, out, optional] float          *DistanceFromPacket,
  [out, retval]       IInkStrokeDisp **Stroke
);

パラメーター

[in] X

x-ポイントのインク空間内の位置。

[in] Y

ポイントの y- インク空間内の位置を指定します。

[in, out, optional] PointOnStroke

省略可能。 InkDisp オブジェクト内の指定したポイントに最も近いストロークの線上のポイントを取得します。 たとえば、値 1.5 は、ストロークの 1 番目と 2 番目のパケットの間にポイントが中間にあることを示します。 このパラメーターは、NULL でもかまいません。 既定値は 0 です。

[in, out, optional] DistanceFromPacket

省略可能。 インク空間内の指定したポイントと InkDisp オブジェクトの最も近いストロークの間の距離を取得します。 このパラメーターは、NULL でもかまいません。 既定値は 0 です。

[out, retval] Stroke

このメソッドが返されるときに、InkDisp オブジェクト内の指定したポイントに最も近いポイントを含む IInkStrokeDisp が格納されます。 指定した点から同じ距離にある点が複数のストロークに含まれている場合、この結果の値は任意です。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
正常終了しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_FAIL
未指定のエラーが発生しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
E_OUTOFMEMORY
メモリ操作を割り当てることができません。

解説

ストロークの線上の点が 2 つの物理的な座標点の間に収まる可能性があるため、出力 ポイント パラメーターは浮動小数点数として定義されます。 この値を使用して、 Split メソッドで ストロークを分割するか、値を切り上げたり下げたりして、ストローク内のパケットのインデックスを作成します。

distanceFromPacket パラメーターは、点からストロークのエンベロープまでの距離を表します。 これは、2 つのポイントからストロークの幅の半分を引いた距離です。

要件

   
サポートされている最小のクライアント Windows XP タブレット PC エディション [デスクトップ アプリのみ]
サポートされている最小のサーバー サポートなし
対象プラットフォーム Windows
ヘッダー msinkaut.h
Library InkObj.dll

関連項目

IInkDisp

IInkStrokeDisp インターフェイス

InkDisp クラス

NearestPoint メソッド [IInkStrokeDisp インターフェイス]

Split メソッド