Freigeben über


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

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

Siehe auch

Referenz

Stroke-Klasse

Stroke-Member

NearestPoint-Überladung

Microsoft.Ink-Namespace

Ink.NearestPoint

Ink.HitTest

Stroke.GetRectangleIntersections