Ink.NearestPoint メソッド (Point, Single%)
指定されたポイントに最も近い Stroke オブジェクト、および指定されたポイントに最も近い Stroke オブジェクトのポイントを返します。
名前空間 : Microsoft.Ink
アセンブリ : Microsoft.Ink (Microsoft.Ink.dll 内)
構文
'宣言
Public Function NearestPoint ( _
point As Point, _
<OutAttribute> ByRef pointOnStroke As Single _
) As Stroke
'使用
Dim instance As Ink
Dim point As Point
Dim pointOnStroke As Single
Dim returnValue As Stroke
returnValue = instance.NearestPoint(point, _
pointOnStroke)
public Stroke NearestPoint(
Point point,
out float pointOnStroke
)
public:
Stroke^ NearestPoint(
Point point,
[OutAttribute] float% pointOnStroke
)
public Stroke NearestPoint(
Point point,
/** @attribute OutAttribute */ /** @ref */float pointOnStroke
)
public function NearestPoint(
point : Point,
pointOnStroke : float
) : Stroke
パラメータ
- point
型 : System.Drawing.Point
インク空間座標内で指定された Ink オブジェクト内にある指定されたポイント。
- pointOnStroke
型 : System.Single%
Ink オブジェクト内で指定されたポイントに最も近い Stroke オブジェクトのポイント。
戻り値
型 : Microsoft.Ink.Stroke
Ink オブジェクト内の指定された point に最も近い Point を含む Stroke を返します。既知の Point からの距離が同じである Point が 1 つ以上のストロークに含まれている場合、この結果値は任意になります。
解説
Stroke オブジェクトのポイントは 2 つの物理座標ポイントの間になるため、pointOnStroke パラメータは浮動小数点数として定義されます。たとえば値 1.5 は、ポイントがストロークの最初のパケットと 2 番目のパケットの中間になることを示します。この値を使用し、Split メソッドを呼び出して Stroke オブジェクトを分割するか、値を切り上げまたは切り捨てて Stroke オブジェクト内のパケットにインデックスを付けます。
例
この例では、インク コントロールの中心に最も近い Stroke オブジェクトの色が赤に変更されます。さらに、見つかった、インク コントロールの中心に最も近い Stroke オブジェクトのポイントとインク コントロールの中心とを結ぶ新しい 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
' get the nearest stroke
Dim pointOnStroke As Single
Dim nStroke As Stroke = mInkOverlay.Ink.NearestPoint(centerPt, pointOnStroke)
' nStroke will be null if there aren't any strokes
If Not IsNothing(nStroke) Then
' change the color of the nearest stroke to red
nStroke.DrawingAttributes.Color = Color.Red
Dim ptIdx As Integer = CType(Math.Round(pointOnStroke, MidpointRounding.ToEven), Integer)
' create points from the center to the nearest point on the stroke
Dim connectPts() As Point = _
{ _
centerPt, _
nStroke.GetPoint(ptIdx) _
}
' create the stroke
mInkOverlay.Ink.CreateStroke(connectPts)
inkControl.Invalidate()
End If
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);
}
// get the nearest stroke
float pointOnStroke;
Stroke nStroke = mInkOverlay.Ink.NearestPoint(centerPt, out pointOnStroke);
// nStroke will be null if there aren't any strokes
if (nStroke != null)
{
// change the color of the nearest stroke to red
nStroke.DrawingAttributes.Color = Color.Red;
int ptIdx = (int)Math.Round(pointOnStroke, MidpointRounding.ToEven);
// create points from the center to the nearest point on the stroke
Point[] connectPts = new Point[2]
{
centerPt,
nStroke.GetPoint(ptIdx)
};
// create the stroke
mInkOverlay.Ink.CreateStroke(connectPts);
inkControl.Invalidate();
}
プラットフォーム
Windows Vista
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 3.0