Compartir a través de


InkCanvas.HitTestSelection(Point) Método

Definición

Devuelve un valor que indica qué parte del adorno de la selección cruza o rodea el punto especificado.

public:
 System::Windows::Controls::InkCanvasSelectionHitResult HitTestSelection(System::Windows::Point point);
public System.Windows.Controls.InkCanvasSelectionHitResult HitTestSelection (System.Windows.Point point);
member this.HitTestSelection : System.Windows.Point -> System.Windows.Controls.InkCanvasSelectionHitResult
Public Function HitTestSelection (point As Point) As InkCanvasSelectionHitResult

Parámetros

point
Point

Punto para la prueba de posicionamiento.

Devoluciones

InkCanvasSelectionHitResult

Valor que indica qué parte del adorno de la selección cruza o rodea un punto especificado.

Ejemplos

En el ejemplo siguiente se muestra cómo usar HitTestSelection para determinar si se va a crear un DataObject objeto para iniciar la arrastrar y colocar. Para implementar arrastrar y colocar entre dos InkCanvas objetos, vea Cómo: Arrastrar y colocar entrada de lápiz.

void InkCanvas_PreviewMouseDown(object sender, MouseEventArgs e)
{
    InkCanvas ic = (InkCanvas)sender;
    
    Point pt = e.GetPosition(ic);

    // If the user is moving selected strokes, prepare the strokes to be
    // moved to another InkCanvas.
    if (ic.HitTestSelection(pt) == 
        InkCanvasSelectionHitResult.Selection)
    {
        StrokeCollection selectedStrokes = ic.GetSelectedStrokes();
        StrokeCollection strokesToMove = selectedStrokes.Clone();
    
        // Remove the offset of the selected strokes so they
        // are positioned when the strokes are dropped.
        Rect inkBounds = strokesToMove.GetBounds();
        TranslateStrokes(strokesToMove, -inkBounds.X, -inkBounds.Y);
        
        // Perform drag and drop.
        MemoryStream ms = new MemoryStream();
        strokesToMove.Save(ms);
        DataObject dataObject = new DataObject(
            StrokeCollection.InkSerializedFormat, ms);
        
        DragDropEffects effects = 
            DragDrop.DoDragDrop(ic, dataObject, 
                                DragDropEffects.Move);

        if ((effects & DragDropEffects.Move) == 
             DragDropEffects.Move)
        {
            // Remove the selected strokes 
            // from the current InkCanvas.
            ic.Strokes.Remove(selectedStrokes);
        }
    }
}
Private Sub InkCanvas_PreviewMouseDown(ByVal sender As Object, _
                               ByVal e As MouseButtonEventArgs)

    Dim ic As InkCanvas = CType(sender, InkCanvas)

    Dim pt As Point = e.GetPosition(ic)

    ' If the user is moving selected strokes, prepare the strokes to be
    ' moved to another InkCanvas.
    If ic.HitTestSelection(pt) = InkCanvasSelectionHitResult.Selection Then

        Dim selectedStrokes As StrokeCollection = _
                               ic.GetSelectedStrokes()

        Dim strokesToMove As StrokeCollection = _
                             selectedStrokes.Clone()

        ' Remove the offset of the selected strokes so they
        ' are positioned when the strokes are dropped.
        Dim inkBounds As Rect = strokesToMove.GetBounds()
        TranslateStrokes(strokesToMove, -inkBounds.X, -inkBounds.Y)

        ' Perform drag and drop.
        Dim ms As New MemoryStream()
        strokesToMove.Save(ms)

        Dim dataObject As New DataObject _
            (StrokeCollection.InkSerializedFormat, ms)

        Dim effects As DragDropEffects = _
            DragDrop.DoDragDrop(ic, dataObject, DragDropEffects.Move)

        If (effects And DragDropEffects.Move) = DragDropEffects.Move Then

            ' Remove the selected strokes from the current InkCanvas.
            ic.Strokes.Remove(selectedStrokes)
        End If
    End If

End Sub

Comentarios

Use el HitTestSelection método para determinar si el punto está dentro de los límites de una selección de trazo o en uno de los ocho identificadores. Esto resulta útil al realizar operaciones de arrastrar y colocar.

Se aplica a