Partager via


Stroke.NearestPoint, méthode (Point)

Mise à jour : November 2007

Retourne l'emplacement sur l'objet Stroke qui est le plus proche d'un Point (page pouvant être en anglais) spécifié.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
Public Function NearestPoint ( _
    pt As Point _
) As Single
'Utilisation
Dim instance As Stroke
Dim pt As Point
Dim returnValue As Single

returnValue = instance.NearestPoint(pt)
public float NearestPoint(
    Point pt
)
public:
float NearestPoint(
    Point pt
)
public float NearestPoint(
    Point pt
)
public function NearestPoint(
    pt : Point
) : float

Paramètres

  • pt
    Type : System.Drawing.Point
    Point spécifié, sous forme de coordonnées de l'espace d'entrée manuscrite.

Valeur de retour

Type : System.Single
Retourne l'emplacement sur l'objet Stroke qui est le plus proche d'un Point (page pouvant être en anglais) spécifié.

Notes

L'index à virgule flottante désigne une valeur float qui représente un emplacement situé entre deux points de l'objet Stroke. Par exemple, si 0.0 est le premier point du trait et 1.0 le deuxième, 0.5 est à mi-chemin entre le premier et le deuxième points. De la même façon, une valeur d'index à virgule flottante de 37,25 représente un emplacement qui est situé à 25 % sur la longueur de la ligne entre les points 37 et 38 du trait.

Exemples

Dans cet exemple, chaque objet Stroke sélectionné d'un objet InkOverlay est examiné. À l'aide de la méthode NearestPoint, il est possible de déterminer le point du trait le plus proche du centre de la zone d'entrée manuscrite. Un objet Stroke est alors créé. Il connecte le point le plus proche au centre de la zone 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
' examine each selected stroke
For Each S As Stroke In mInkOverlay.Selection
    ' get the index of the nearest point
    Dim fIdx As Single = S.NearestPoint(centerPt)
    ' create points from the center to the nearest point on the stroke
    Dim connectPts() As Point = _
    { _
        centerPt, _
        S.GetPoint(CType(Math.Round(fIdx, MidpointRounding.ToEven), Integer)) _
    }
    ' create the stroke
    S.Ink.CreateStroke(connectPts)
Next
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);
}

// examine each selected stroke
foreach (Stroke S in mInkOverlay.Selection)
{
    // get the index of the nearest point
    float fIdx = S.NearestPoint(centerPt);
    // create points from the center to the nearest point on the stroke
    Point[] connectPts = new Point[2] 
    {
        centerPt, 
        S.GetPoint((int)Math.Round(fIdx, MidpointRounding.ToEven))
    };
    // create the stroke
    S.Ink.CreateStroke(connectPts);
}

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

Stroke, classe

Membres Stroke

NearestPoint, surcharge

Microsoft.Ink, espace de noms

Ink.NearestPoint

Ink.HitTest

Stroke.GetRectangleIntersections