Condividi tramite


Metodo Stroke.NearestPoint (Point, Single%)

Aggiornamento: novembre 2007

Restituisce la posizione dell'oggetto Stroke più vicina a una struttura Point specificata e la distanza tra il punto e l'oggetto Stroke.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Sintassi

'Dichiarazione
Public Function NearestPoint ( _
    pt As Point, _
    <OutAttribute> ByRef distance As Single _
) As Single
'Utilizzo
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

Parametri

  • distance
    Tipo: System.Single%
    Distanza dal punto all'oggetto Stroke, come indice a virgola mobile.

Valore restituito

Tipo: System.Single
Restituisce la posizione dell'oggetto Stroke più vicina a una struttura Point specificata.

Note

Un indice a virgola mobile è un valore float che rappresenta una posizione tra due punti nell'oggetto Stroke. Ad esempio, se 0,0 è il primo punto nel tratto e 1,0 è il secondo punto nel tratto, 0,5 si trova in posizione intermedia tra il primo e il secondo punto. Allo stesso modo, un valore di indice a virgola mobile di 37,25 rappresenta una posizione che si trova al 25 percento sulla riga tra i punti 37 e 38 del tratto.

Esempi

In questo esempio, viene esaminato ogni oggetto Stroke selezionato di un oggetto InkOverlay. Utilizzando il metodo NearestPoint, vengono determinati il punto sul tratto più vicino al centro dell'area di disegno dell'input penna e la distanza in unità HIMETRIC dal centro a tale punto. Se la distanza è almeno pari a 2000 unità HIMETRIC, viene creato un nuovo oggetto Stroke che collega il punto più vicino al centro dell'area di disegno dell'input penna.

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);
    }
}

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

Stroke Classe

Membri Stroke

Overload NearestPoint

Spazio dei nomi Microsoft.Ink

Ink.NearestPoint

Ink.HitTest

Stroke.GetRectangleIntersections