Compartir a través de


Ink.NearestPoint (Método) (Point, Single%, Single%)

Actualización: noviembre 2007

Devuelve el objeto Stroke más cercano a un punto especificado, devuelve el punto en el objeto Stroke que está más cerca del punto especificado y devuelve la distancia entre el punto especificado y el punto más cercano en el objeto Stroke en el objeto Ink.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink (en Microsoft.Ink.dll)

Sintaxis

'Declaración
Public Function NearestPoint ( _
    point As Point, _
    <OutAttribute> ByRef pointOnStroke As Single, _
    <OutAttribute> ByRef distanceFromPacket As Single _
) As Stroke
'Uso
Dim instance As Ink
Dim point As Point
Dim pointOnStroke As Single
Dim distanceFromPacket As Single
Dim returnValue As Stroke

returnValue = instance.NearestPoint(point, _
    pointOnStroke, distanceFromPacket)
public Stroke NearestPoint(
    Point point,
    out float pointOnStroke,
    out float distanceFromPacket
)
public:
Stroke^ NearestPoint(
    Point point, 
    [OutAttribute] float% pointOnStroke, 
    [OutAttribute] float% distanceFromPacket
)
public Stroke NearestPoint(
    Point point,
    /** @attribute OutAttribute */ /** @ref */float pointOnStroke,
    /** @attribute OutAttribute */ /** @ref */float distanceFromPacket
)
public function NearestPoint(
    point : Point, 
    pointOnStroke : float, 
    distanceFromPacket : float
) : Stroke

Parámetros

  • point
    Tipo: System.Drawing.Point
    El punto especificado dentro del objeto Ink, dado en coordenadas de espacio de entrada manuscrita.
  • pointOnStroke
    Tipo: System.Single%
    El punto en el objeto Stroke que está más cerca del punto especificado dentro del objeto Ink.
  • distanceFromPacket
    Tipo: System.Single%
    La distancia entre el punto especificado y el objeto Stroke más cercano en el objeto Ink.

Valor devuelto

Tipo: Microsoft.Ink.Stroke
El objeto Stroke que contiene un Point que se encuentra más cerca del punto especificado en el objeto Ink. Si hay más de un trazo que contiene un Point que está a la misma distancia desde el Point conocido, el valor del resultado es arbitrario.

Comentarios

El parámetro distanceFromPacket describe la distancia desde el punto especificado al sobre del objeto Stroke. Se trata de la distancia entre los dos puntos menos la mitad de la propiedad Width de DrawingAttributes del objeto Stroke.

Ejemplos

En este ejemplo, si un objeto Stroke contiene un punto que está incluido en 500 unidades HIMETRIC del centro del control de entrada manuscrita, el color del objeto Stroke cambia a rojo. Además, se crea un nuevo objeto Stroke que se ejecuta desde el punto del objeto Stroke detectado que está más cerca del centro del control de la entrada manuscrita.

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 distanceFromPacket As Single
Dim nStroke As Stroke = mInkOverlay.Ink.NearestPoint(centerPt, pointOnStroke, distanceFromPacket)
' nStroke will be null if there aren't any strokes
If Not IsNothing(nStroke) And distanceFromPacket <= 500.0 Then
    ' change the color of the nearest stroke to red
    nStroke.DrawingAttributes.Color = Color.Red
    'Dim ptIdx As Integer = DirectCast(Math.Round(pointOnStroke, MidpointRounding.ToEven), Integer)

    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;
float distanceFromPacket;
Stroke nStroke = mInkOverlay.Ink.NearestPoint(centerPt, out pointOnStroke, out distanceFromPacket);

// nStroke will be null if there aren't any strokes
if (nStroke != null && distanceFromPacket <= 500.0)
{
    // 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();
}

Plataformas

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Información de versión

.NET Framework

Compatible con: 3.0

Vea también

Referencia

Ink (Clase)

Ink (Miembros)

NearestPoint (Sobrecarga)

Microsoft.Ink (Espacio de nombres)

Stroke

Stroke.Split