Stroke.NearestPoint メソッド (Point)
指定した Point に最も近い Stroke オブジェクトの位置を返します。
名前空間 : Microsoft.Ink
アセンブリ : Microsoft.Ink (Microsoft.Ink.dll 内)
構文
'宣言
Public Function NearestPoint ( _
pt As Point _
) As Single
'使用
Dim instance As Stroke
Dim pt As Point
Dim returnValue As Single
returnValue = instance.NearestPoint(pt)
public float NearestPoint(
Point pt
)
public:
float NearestPoint(
Point pt
)
public float NearestPoint(
Point pt
)
public function NearestPoint(
pt : Point
) : float
パラメータ
- pt
型 : System.Drawing.Point
インク空間座標における指定したポイント。
戻り値
型 : System.Single
指定した Point に最も近い Stroke オブジェクトの位置を返します。
解説
浮動小数点インデックスは、Stroke オブジェクト内の 2 つのポイントの間のある場所を表す浮動小数点値です。たとえば、0.0 がストローク内の最初のポイントで、1.0 がストローク内の 2 番目のポイントの場合、0.5 が最初のポイントと 2 番目のポイントの間の中間です。同様に、浮動小数点インデックス値 37.25 は、ストロークのポイント 37 と 38 の間の線に沿って 25 パーセント進んだ位置を表しています。
例
この例では、InkOverlay オブジェクトで選択された各 Stroke オブジェクトが調べられます。NearestPoint メソッドを使用して、ストローク上でインク キャンバスの中心に最も近いポイントが決定されます。次に、この最も近いポイントとインク キャンバスの中心を結ぶ新しい Stroke オブジェクトが作成されます。
Dim inkControl As Control = mInkOverlay.AttachedControl
' get the center of the ink control
Dim centerPt As Point = New Point(inkControl.Width / 2, inkControl.Height / 2)
Using g As Graphics = inkControl.CreateGraphics()
' convert center point to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, centerPt)
End Using
' examine each selected stroke
For Each S As Stroke In mInkOverlay.Selection
' get the index of the nearest point
Dim fIdx As Single = S.NearestPoint(centerPt)
' create points from the center to the nearest point on the stroke
Dim connectPts() As Point = _
{ _
centerPt, _
S.GetPoint(CType(Math.Round(fIdx, MidpointRounding.ToEven), Integer)) _
}
' create the stroke
S.Ink.CreateStroke(connectPts)
Next
Control inkControl = mInkOverlay.AttachedControl;
// get the center of the ink control
Point centerPt = new Point(inkControl.Width / 2, inkControl.Height / 2);
using (Graphics g = inkControl.CreateGraphics())
{
// convert center point to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, ref centerPt);
}
// examine each selected stroke
foreach (Stroke S in mInkOverlay.Selection)
{
// get the index of the nearest point
float fIdx = S.NearestPoint(centerPt);
// create points from the center to the nearest point on the stroke
Point[] connectPts = new Point[2]
{
centerPt,
S.GetPoint((int)Math.Round(fIdx, MidpointRounding.ToEven))
};
// create the stroke
S.Ink.CreateStroke(connectPts);
}
プラットフォーム
Windows Vista
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 3.0