Ink.NearestPoint-Methode (Point, Single%)
Gibt das einem angegebenen Punkt nächstgelegene Stroke-Objekt zurück, und gibt den Punkt auf dem Stroke-Objekt zurück, der dem angegebenen Punkt am nächsten liegt.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Function NearestPoint ( _
point As Point, _
<OutAttribute> ByRef pointOnStroke As Single _
) As Stroke
'Usage
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
Parameter
- point
Typ: System.Drawing.Point
Der in Freihandbereichkoordinaten angegebene Punkt im Ink-Objekt.
- pointOnStroke
Typ: System.Single%
Der Punkt auf dem Stroke-Objekt, der dem angegebenen Punkt im Ink-Objekt am nächsten liegt.
Rückgabewert
Typ: Microsoft.Ink.Stroke
Gibt das Stroke-Objekt zurück, das einen Point enthält, der dem angegebenen point 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 pointOnStroke-Parameter ist als Gleitkommazahl definiert, weil der Punkt auf dem Stroke-Objekt zwischen zwei physischen Koordinatenpunkten liegen kann. Beispielsweise gibt der Wert 1,5 an, dass der Punkt genau in der Mitte zwischen dem ersten und dem zweiten Paket des Strichs liegt. Verwenden Sie diesen Wert, um das Stroke-Objekt durch einen Aufruf der Split-Methode aufzuteilen, oder runden Sie den Wert auf oder ab, um einen Index für ein Paket im Stroke-Objekt zu erhalten.
Beispiele
In diesem Beispiel wird die Farbe des Stroke-Objekts, das dem Mittelpunkt der Freihandeingabe am nächsten liegt, 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 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();
}
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