IncrementalHitTester Class
Dynamically performs hit testing on a Stroke.
Assembly: PresentationCore (in PresentationCore.dll)
System.Windows.Ink.IncrementalHitTester
System.Windows.Ink.IncrementalLassoHitTester
System.Windows.Ink.IncrementalStrokeHitTester
| Name | Description | |
|---|---|---|
![]() | IsValid | Gets whether the IncrementalHitTester is hit testing. |
| Name | Description | |
|---|---|---|
![]() | AddPoint(Point) | Adds a Point to the IncrementalHitTester. |
![]() | AddPoints(IEnumerable<Point>) | Adds points to the IncrementalHitTester. |
![]() | AddPoints(StylusPointCollection) | Adds the specified StylusPoint objects to the IncrementalHitTester. |
![]() | AddPointsCore(IEnumerable<Point>) | This API supports the product infrastructure and is not intended to be used directly from your code. Adds points to the IncrementalHitTester. |
![]() | EndHitTesting() | Releases resources used by the IncrementalHitTester. |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
The IncrementalHitTester dynamically determines whether the user "hits" a Stroke. This class enables you to provide immediate feedback to the user in situations such as selecting and erasing ink.
There are two classes that inherit from IncrementalHitTester:
The IncrementalLassoHitTester hit tests strokes by determining whether a lasso path surrounds it.
The IncrementalStrokeHitTester hit tests strokes by determining where an eraser path intersects it.
The following table lists where to learn how to manage digital ink on a custom control.
To do this… | See this article |
|---|---|
Create a control that collects digital ink | |
Create a control that enables the user to select ink | |
Create a control that enables the user to point-erase ink |
This class is not typically used in XAML.
The following example demonstrates how to add points to the IncrementalHitTester when the user inputs data with the stylus. The example includes a StrokeHit event handler that erases the part of the Stroke that the user intersects. To create a control that enables a user to erase ink, see How to: Erase Ink on a Custom Control.
// Prepare to collect stylus packets. Get the // IncrementalHitTester from the InkPresenter's // StrokeCollection and subscribe to its StrokeHitChanged event. protected override void OnStylusDown(StylusDownEventArgs e) { base.OnStylusDown(e); EllipseStylusShape eraserTip = new EllipseStylusShape(3, 3, 0); eraseTester = presenter.Strokes.GetIncrementalStrokeHitTester(eraserTip); eraseTester.StrokeHit += new StrokeHitEventHandler(eraseTester_StrokeHit); eraseTester.AddPoints(e.GetStylusPoints(this)); } // Collect the StylusPackets as the stylus moves. protected override void OnStylusMove(StylusEventArgs e) { if (eraseTester.IsValid) { eraseTester.AddPoints(e.GetStylusPoints(this)); } } // Unsubscribe from the StrokeHitChanged event when the // user lifts the stylus. protected override void OnStylusUp(StylusEventArgs e) { eraseTester.AddPoints(e.GetStylusPoints(this)); eraseTester.StrokeHit -= new StrokeHitEventHandler(eraseTester_StrokeHit); eraseTester.EndHitTesting(); } // When the stylus intersects a stroke, erase that part of // the stroke. When the stylus dissects a stoke, the // Stroke.Erase method returns a StrokeCollection that contains // the two new strokes. void eraseTester_StrokeHit(object sender, StrokeHitEventArgs args) { StrokeCollection eraseResult = args.GetPointEraseResults(); StrokeCollection strokesToReplace = new StrokeCollection(); strokesToReplace.Add(args.HitStroke); // Replace the old stroke with the new one. if (eraseResult.Count > 0) { presenter.Strokes.Replace(strokesToReplace, eraseResult); } else { presenter.Strokes.Remove(strokesToReplace); } }
Available since 3.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


