Partager via


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

Mise à jour : November 2007

Retourne l'emplacement sur l'objet Stroke le plus proche d'un Point (page pouvant être en anglais) spécifié et la distance entre le point et l'objet Stroke.

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

Syntaxe

'Déclaration
Public Function NearestPoint ( _
    pt As Point, _
    <OutAttribute> ByRef distance As Single _
) As Single
'Utilisation
Dim instance As Stroke
Dim pt As Point
Dim distance As Single
Dim returnValue As Single

returnValue = instance.NearestPoint(pt, _
    distance)
public float NearestPoint(
    Point pt,
    out float distance
)
public:
float NearestPoint(
    Point pt, 
    [OutAttribute] float% distance
)
public float NearestPoint(
    Point pt,
    /** @attribute OutAttribute */ /** @ref */float distance
)
public function NearestPoint(
    pt : Point, 
    distance : float
) : float

Paramètres

  • pt
    Type : System.Drawing.Point
    Point spécifié, sous forme de coordonnées de l'espace d'entrée manuscrite.
  • distance
    Type : System.Single%
    Distance du point à l'objet Stroke, en tant qu'index à virgule flottante.

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 et la distance en unités HIMETRIC séparant ce point du centre. Si la distance est d'au moins 2 000 unités HIMETRIC, un objet Stroke est créé. Il connecte le point le plus proche du centre à 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 distance As Single
    Dim fIdx As Single = S.NearestPoint(centerPt, distance)
    If distance >= 2000.0 Then
        ' 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)
    End If
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 distance;
    float fIdx = S.NearestPoint(centerPt, out distance);
    if (distance >= 2000.0)
    {
        // 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