Stroke.NearestPoint-Methode (Point, Single%)
Gibt die Position auf dem Stroke-Objekt, die einem angegebenen Point am nächsten liegt, und den Abstand zwischen dem Punkt und dem Stroke-Objekt zurück.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Function NearestPoint ( _
pt As Point, _
<OutAttribute> ByRef distance As Single _
) As Single
'Usage
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
Parameter
- pt
Typ: System.Drawing.Point
Der angegebene Punkt in Freihandbereichkoordinaten.
- distance
Typ: System.Single%
Die Entfernung vom Punkt zum Stroke-Objekt als Gleitkommaindex.
Rückgabewert
Typ: System.Single
Gibt die Position im Stroke-Objekt zurück, das einem bestimmten Punkt am nächsten liegt.
Hinweise
Ein Gleitkommaindex ist ein Gleitkommawert, der eine beliebige Position zwischen zwei Punkten im Stroke-Objekt darstellt. Beispiele: Wenn 0,0 der erste Punkt im Strich und 1,0 der zweite Punkt im Strich ist, liegt 0,5 genau in der Mitte zwischen dem ersten und dem zweiten Punkt. Ebenso stellt ein Gleitkommaindexwert von 37,25 eine Position dar, die sich 25 Prozent entlang der Zeile zwischen den Punkten 37 und 38 des Strichs befindet.
Beispiele
In diesem Beispiel wird jedes ausgewählte Stroke-Objekt eines InkOverlay-Objekts überprüft. Mithilfe der NearestPoint-Methode werden der Punkt auf dem Strich, der dem Mittelpunkt des Freihandeingabe-Canvas am nächsten liegt, und der Abstand in HIMETRIC-Einheiten vom Mittelpunkt zu diesem Punkt bestimmt. Wenn der Abstand mindestens 2000 HIMETRIC Einheiten beträgt, wird ein neues Stroke-Objekt erstellt, das den nächstgelegenen Punkt mit dem Mittelpunkt des Freihandeingabe-Canvas verbindet.
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);
}
}
Plattformen
Windows Vista
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen
.NET Framework
Unterstützt in: 3.0