Stroke.NearestPoint メソッド (Point, Single%)
指定した Point に最も近い Stroke オブジェクトの位置と、そのポイントと Stroke オブジェクトの間の距離を返します。
名前空間 : Microsoft.Ink
アセンブリ : Microsoft.Ink (Microsoft.Ink.dll 内)
構文
'宣言
Public Function NearestPoint ( _
pt As Point, _
<OutAttribute> ByRef distance As Single _
) As Single
'使用
Dim instance As Stroke
Dim pt As Point
Dim distance As Single
Dim returnValue As Single
returnValue = instance.NearestPoint(pt, _
distance)
public float NearestPoint(
Point pt,
out float distance
)
public:
float NearestPoint(
Point pt,
[OutAttribute] float% distance
)
public float NearestPoint(
Point pt,
/** @attribute OutAttribute */ /** @ref */float distance
)
public function NearestPoint(
pt : Point,
distance : float
) : float
パラメータ
- pt
型 : System.Drawing.Point
インク空間座標における指定したポイント。
- distance
型 : System.Single%
そのポイントから Stroke オブジェクトまでの距離 (浮動小数点インデックス)。
戻り値
型 : System.Single
指定した Point に最も近い Stroke オブジェクトの位置を返します。
解説
浮動小数点インデックスは、Stroke オブジェクト内の 2 つのポイントの間のある場所を表す浮動小数点値です。たとえば、0.0 がストローク内の最初のポイントで、1.0 がストローク内の 2 番目のポイントの場合、0.5 が最初のポイントと 2 番目のポイントの間の中間です。同様に、浮動小数点インデックス値 37.25 は、ストロークのポイント 37 と 38 の間の線に沿って 25 パーセント進んだ位置を表しています。
例
この例では、InkOverlay オブジェクトで選択された各 Stroke オブジェクトが調べられます。NearestPoint メソッドを使用して、インク キャンバスの中心に最も近いポイントと、中心からこのポイントまでの HIMETRIC 単位の距離が決定されます。距離が 2000 HIMETRIC 単位以上ある場合は、最も近いポイントとインク キャンバスの中心を結ぶ新しい 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 distance As Single
Dim fIdx As Single = S.NearestPoint(centerPt, distance)
If distance >= 2000.0 Then
' 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)
End If
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 distance;
float fIdx = S.NearestPoint(centerPt, out distance);
if (distance >= 2000.0)
{
// 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