Partager via


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

Voir aussi

Référence

Ink, classe

Membres Ink

NearestPoint, surcharge

Microsoft.Ink, espace de noms

Stroke

Stroke.Split