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