Ink.NearestPoint, méthode (Point, Single%, Single%)
Mise à jour : November 2007
Retourne l'objet Stroke le plus proche d'un point spécifié, retourne le point de l'objet Stroke le plus proche du point spécifié, puis retourne la distance séparant le point spécifié et le point le plus proche de l'objet Stroke dans l'objet Ink.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
Public Function NearestPoint ( _
point As Point, _
<OutAttribute> ByRef pointOnStroke As Single, _
<OutAttribute> ByRef distanceFromPacket As Single _
) As Stroke
'Utilisation
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
Paramètres
- point
Type : System.Drawing.Point
Point spécifié dans l'objet Ink, donné dans les coordonnées de l'espace d'entrée manuscrite.
- pointOnStroke
Type : System.Single%
Point sur l'objet Stroke le plus proche du point spécifié dans l'objet Ink.
- distanceFromPacket
Type : System.Single%
Distance entre le point spécifié et l'objet Stroke le plus proche dans l'objet Ink.
Valeur de retour
Type : Microsoft.Ink.Stroke
Stroke qui contient le Point (page pouvant être en anglais) le plus proche du point spécifié dans l'objet Ink. Si plusieurs traits contiennent un Point (page pouvant être en anglais) situé à la même distance du Point (page pouvant être en anglais) connu, la valeur de ce résultat est arbitraire.
Notes
Le paramètre distanceFromPacket donne la distance séparant le point spécifié et l'enveloppe de l'objet Stroke. Il s'agit de la distance entre les deux points moins la moitié de la propriété Width du DrawingAttributes de l'objet Stroke.
Exemples
Dans cet exemple, si un objet Stroke contient un point situé dans un rayon de 500 unités HIMETRIC du centre du contrôle d'entrée manuscrite, l'objet Stroke devient rouge. De plus, un nouvel objet Stroke est créé et relie le point de l'objet Stroke découvert le plus proche du centre du contrôle d'entrée manuscrite au centre du contrôle d'entrée manuscrite.
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();
}
Plateformes
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Informations de version
.NET Framework
Pris en charge dans : 3.0