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
- 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.
- 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