StrokeCollection.HitTest Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Indicates whether a specified StylusPointCollection intersects with a StrokeCollection object.
Assembly: System.Windows (in System.Windows.dll)
Parameters
- stylusPointCollection
- Type: System.Windows.Input.StylusPointCollection
The StylusPointCollection used to check for intersection with the Stroke object.
Return Value
Type: System.Windows.Ink.StrokeCollectionA 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.

If you make the following HitTest call, the returned StrokeCollection contains S1 and S2.
MyStrokes.HitTest(MySPC)
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.
<Canvas> <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" MouseLeftButtonDown="MyIP_MouseLeftButtonDown" MouseMove="MyIP_MouseMove" LostMouseCapture="MyIP_LostMouseCapture" /> </Canvas>
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) { MyIP.CaptureMouse(); StylusPointCollection MyStylusPointCollection = new StylusPointCollection(); MyStylusPointCollection.Add(e.StylusDevice.GetStylusPoints(MyIP)); MyStroke = new Stroke(MyStylusPointCollection); MyStroke.DrawingAttributes.Color = Colors.Yellow; MyStroke.DrawingAttributes.Width = 8; MyIP.Strokes.Add(MyStroke); } //StylusPoint objects are collected from the MouseEventArgs and added to MyStroke. private void MyIP_MouseMove(object sender, MouseEventArgs e) { if (MyStroke != null) { MyStroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(MyIP)); 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; }