StrokeCollection.HitTest Method

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Indicates whether a specified StylusPointCollection intersects with a StrokeCollection object.

Namespace:  System.Windows.Ink
Assembly:  System.Windows (in System.Windows.dll)


Public Function HitTest ( _
    stylusPointCollection As StylusPointCollection _
) As StrokeCollection
public StrokeCollection HitTest(
    StylusPointCollection stylusPointCollection


Return Value

Type: System.Windows.Ink.StrokeCollection
A StrokeCollection that contains the strokes that intersect with the points in the specified StylusPointCollection.


Consider a StrokeCollection named MyStrokes that contain strokes S0 - S2, and a StylusPointCollection named MySPC that contains points P0 - P3. The following illustration shows the position of these strokes and points.

Hit-Test for StrokeCollection

If you make the following HitTest call, the returned StrokeCollection contains S1 and S2.



The following code demonstrates the HitTest method. If you draw a stroke that intersects an existing stroke collection, the color of the existing stroke changes to red.

Run this sample

    <Rectangle Height="500" Width="500" Stroke="Black" Margin="50,50,0,0" />
    <InkPresenter x:Name="MyIP" Height="500" Width="500" Background="Transparent" Margin="50,50,0,0"
              LostMouseCapture="MyIP_LostMouseCapture" />
    Private MyStroke As Stroke

    Public Sub New()
    End Sub

    'A new stroke object, MyStroke, is created and is added to the StrokeCollection object
    'of the InkPresenter, MyIP
    Private Sub MyIP_MouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseEventArgs)
        Dim MyStylusPointCollection As StylusPointCollection = New StylusPointCollection
        MyStroke = New Stroke(MyStylusPointCollection)
        MyStroke.DrawingAttributes.Color = Colors.Yellow
        MyStroke.DrawingAttributes.Width = 8
    End Sub

    'StylusPoint objects are collected from the MouseEventArgs and added to MyStroke.
    Private Sub MyIP_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
        If (Not (MyStroke) Is Nothing) Then
            Dim HitStrokes As StrokeCollection = New StrokeCollection
            HitStrokes = MyIP.Strokes.HitTest(e.StylusDevice.GetStylusPoints(MyIP))
            'Change the color of the strokes that the new strokes intersects with.
            Dim i As Integer = 0
            Do While (i _
                        < (HitStrokes.Count - 1))
                HitStrokes(i).DrawingAttributes.Color = Colors.Red
                i = (i + 1)
        End If
    End Sub

    'MyStroke is completed
    Private Sub MyIP_LostMouseCapture(ByVal sender As Object, ByVal e As MouseEventArgs)
        MyStroke = Nothing
    End Sub

Stroke MyStroke;

//A new stroke object named MyStroke is created. MyStroke is added to the StrokeCollection of the InkPresenter named MyIP
private void MyIP_MouseLeftButtonDown(object sender, MouseEventArgs e)

    StylusPointCollection MyStylusPointCollection = new StylusPointCollection();

    MyStroke = new Stroke(MyStylusPointCollection);
    MyStroke.DrawingAttributes.Color = Colors.Yellow;
    MyStroke.DrawingAttributes.Width = 8;


//StylusPoint objects are collected from the MouseEventArgs and added to MyStroke.
private void MyIP_MouseMove(object sender, MouseEventArgs e)
    if (MyStroke != null)
        StrokeCollection HitStrokes = new StrokeCollection();
        HitStrokes = MyIP.Strokes.HitTest(e.StylusDevice.GetStylusPoints(MyIP));
        //Change the color of the strokes that the new strokes intersects with.
        for (int i = 0; i < HitStrokes.Count - 1; i++)
            HitStrokes[i].DrawingAttributes.Color = Colors.Red;


//MyStroke is completed
private void MyIP_LostMouseCapture(object sender, MouseEventArgs e)
    MyStroke = null;

Version Information


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0


For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.