Partager via


Ink.NearestPoint, méthode (Point, Single%)

Mise à jour : November 2007

Retourne l'objet Stroke le plus proche d'un point spécifié et retourne le point de l'objet Stroke le plus proche du point spécifié.

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 _
) As Stroke
'Utilisation
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

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.

Valeur de retour

Type : Microsoft.Ink.Stroke
Retourne le 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 pointOnStroke est défini comme un nombre à virgule flottante car le point de l'objet Stroke peut être situé entre deux points de coordonnées physiques. Par exemple, une valeur de 1,5 indique que le point se trouve à mi-chemin entre le premier et le deuxième paquet du trait. Utilisez cette valeur pour fractionner l'objet Stroke en appelant la méthode Split ou arrondissez la valeur au nombre supérieur ou inférieur pour indexer un paquet dans l'objet Stroke.

Exemples

Dans cet exemple, l'objet Stroke le plus proche du centre du contrôle d'entrée manuscrite 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 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();
}

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