Stroke.HitTest Method
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Indicates whether a specified StylusPointCollection intersects with a Stroke object.
Namespace: System.Windows.Ink
Assembly: System.Windows (in System.Windows.dll)
Syntax
'Declaration
Public Function HitTest ( _
stylusPointCollection As StylusPointCollection _
) As Boolean
public bool HitTest(
StylusPointCollection stylusPointCollection
)
Parameters
- stylusPointCollection
Type: System.Windows.Input.StylusPointCollection
The StylusPointCollection used to check for intersection with the Stroke object.
Return Value
Type: System.Boolean
true if the specified StylusPointCollection intersects with the Stroke object; otherwise, false.
Examples
The following code demonstrates the HitTest method. If you draw a stroke that intersects an existing stroke, the color of the existing stroke changes to red.
Private MyStroke As Stroke
Public Sub New()
MyBase.New()
InitializeComponent()
SetBoundary()
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)
MyIP.CaptureMouse()
Dim MyStylusPointCollection As StylusPointCollection = 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)
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
MyStroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(MyIP))
'Iterate through the stroke collection
Dim i As Integer = 0
Do While (i _
< (MyIP.Strokes.Count - 1))
Dim HitStroke As Stroke = MyIP.Strokes(i)
'If the new stroke intersects with an existing stroke, the color of the
'existing stroke is changed to red.
If HitStroke.HitTest(e.StylusDevice.GetStylusPoints(MyIP)) Then
HitStroke.DrawingAttributes.Color = Colors.Red
End If
i = (i + 1)
Loop
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)
{
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));
//Iterate through the stroke collection
for (int i = 0; i < MyIP.Strokes.Count - 1; i++)
{
Stroke HitStroke = MyIP.Strokes[i];
//If the new stroke intersects with an existing stroke, the color of the
//existing stroke is changed to red.
if (HitStroke.HitTest(e.StylusDevice.GetStylusPoints(MyIP)))
HitStroke.DrawingAttributes.Color = Colors.Red;
}
}
}
//MyStroke is completed
private void MyIP_LostMouseCapture(object sender, MouseEventArgs e)
{
MyStroke = null;
}
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
See Also