Freigeben über


Ink.NearestPoint-Methode (Point, Single%, Single%)

Gibt das einem angegebenen Punkt nächstgelegene Stroke-Objekt zurück, gibt den Punkt auf dem Stroke-Objekt zurück, der dem angegebenen Punkt am nächsten liegt, und gibt die Entfernung zwischen dem angegebenen Punkt und dem nächstgelegenen Punkt auf dem .Stroke-Objekt im Ink-Objekt zurück.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Function NearestPoint ( _
    point As Point, _
    <OutAttribute> ByRef pointOnStroke As Single, _
    <OutAttribute> ByRef distanceFromPacket As Single _
) As Stroke
'Usage
Dim instance As Ink
Dim point As Point
Dim pointOnStroke As Single
Dim distanceFromPacket As Single
Dim returnValue As Stroke

returnValue = instance.NearestPoint(point, _
    pointOnStroke, distanceFromPacket)
public Stroke NearestPoint(
    Point point,
    out float pointOnStroke,
    out float distanceFromPacket
)
public:
Stroke^ NearestPoint(
    Point point, 
    [OutAttribute] float% pointOnStroke, 
    [OutAttribute] float% distanceFromPacket
)
public Stroke NearestPoint(
    Point point,
    /** @attribute OutAttribute */ /** @ref */float pointOnStroke,
    /** @attribute OutAttribute */ /** @ref */float distanceFromPacket
)
public function NearestPoint(
    point : Point, 
    pointOnStroke : float, 
    distanceFromPacket : float
) : Stroke

Parameter

  • pointOnStroke
    Typ: System.Single%
    Der Punkt auf dem Stroke-Objekt, der dem angegebenen Punkt im Ink-Objekt am nächsten liegt.
  • distanceFromPacket
    Typ: System.Single%
    Die Entfernung zwischen dem angegebenen Punkt und dem nächstgelegenen Stroke-Objekt im Ink-Objekt.

Rückgabewert

Typ: Microsoft.Ink.Stroke
Das Stroke-Objekt, das einen Point enthält, der dem angegebenen Punkt im Ink-Objekt am nächsten liegt. Wenn mehr als ein Strich einen Point enthält, der im gleichen Abstand vom bekannten Point liegt, ist der Wert dieses Ergebnisses willkürlich.

Hinweise

Der distanceFromPacket-Parameter beschreibt die Entfernung vom angegebenen Punkt zum Umschlag des Stroke-Objekts. Dies entspricht dem Abstand zwischen den beiden Punkten minus der Hälfte der Width-Eigenschaft der DrawingAttributes des Stroke-Objekts.

Beispiele

Wenn in diesem Beispiel ein Stroke-Objekt einen Punkt enthält, der weniger als 500 HIMETRIC-Einheiten vom Mittelpunkt des Freihandeingabsteuerelements entfernt liegt, dann wird die Farbe des Stroke-Objekts in Rot geändert. Zudem wird ein neues Stroke-Objekt erstellt, das von dem Punkt des erkannten Stroke-Objekts, der dem Mittelpunkt des Freihandeingabesteuerelements am nächsten liegt, zum Mittelpunkt des Freihandeingabesteuerelements verläuft.

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 distanceFromPacket As Single
Dim nStroke As Stroke = mInkOverlay.Ink.NearestPoint(centerPt, pointOnStroke, distanceFromPacket)
' nStroke will be null if there aren't any strokes
If Not IsNothing(nStroke) And distanceFromPacket <= 500.0 Then
    ' change the color of the nearest stroke to red
    nStroke.DrawingAttributes.Color = Color.Red
    'Dim ptIdx As Integer = DirectCast(Math.Round(pointOnStroke, MidpointRounding.ToEven), Integer)

    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;
float distanceFromPacket;
Stroke nStroke = mInkOverlay.Ink.NearestPoint(centerPt, out pointOnStroke, out distanceFromPacket);

// nStroke will be null if there aren't any strokes
if (nStroke != null && distanceFromPacket <= 500.0)
{
    // 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();
}

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

Ink-Klasse

Ink-Member

NearestPoint-Überladung

Microsoft.Ink-Namespace

Stroke

Stroke.Split