Export (0) Print
Expand All

StrokeCollection.HitTest Method

Silverlight

Indicates whether a specified StylusPointCollection intersects with a StrokeCollection object.

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

public StrokeCollection 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.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.

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.

Run this sample


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


Silverlight

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.

Community Additions

ADD
Show:
© 2014 Microsoft