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