IncrementalHitTester.AddPoint(Point) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Fügt der Point einen IncrementalHitTester hinzu.
public:
void AddPoint(System::Windows::Point point);
public void AddPoint (System.Windows.Point point);
member this.AddPoint : System.Windows.Point -> unit
Public Sub AddPoint (point As Point)
Parameter
- point
- Point
Das Point, das in IncrementalHitTester eingefügt werden soll.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Punkte hinzugefügt werden, IncrementalHitTester wenn der Benutzer Daten mit der Maus einschreibt. Das Beispiel enthält einen StrokeHit Ereignishandler, der den Teil des Löschvorgangs löscht, den Stroke der Benutzer überschneidet. Informationen zum Erstellen eines Steuerelements, das es einem Benutzer ermöglicht, Freihand zu löschen, finden Sie unter Vorgehensweise: Löschen von Freihand in einem benutzerdefinierten Steuerelement.
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
if (e.StylusDevice != null)
{
return;
}
EllipseStylusShape eraserTip = new EllipseStylusShape(3, 3, 0);
eraseTester =
presenter.Strokes.GetIncrementalStrokeHitTester(eraserTip);
eraseTester.StrokeHit += new StrokeHitEventHandler(eraseTester_StrokeHit);
eraseTester.AddPoint(e.GetPosition(this));
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.StylusDevice != null || eraseTester == null)
{
return;
}
if (eraseTester.IsValid)
{
eraseTester.AddPoint(e.GetPosition(this));
}
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonUp(e);
if (e.StylusDevice != null)
{
return;
}
eraseTester.AddPoint(e.GetPosition(this));
eraseTester.StrokeHit -= new
StrokeHitEventHandler(eraseTester_StrokeHit);
eraseTester.EndHitTesting();
}
Protected Overrides Sub OnMouseLeftButtonDown(ByVal e As MouseButtonEventArgs)
MyBase.OnMouseLeftButtonDown(e)
If Not e.StylusDevice Is Nothing Then
Return
End If
Dim eraserTip As EllipseStylusShape = New EllipseStylusShape(3, 3, 0)
eraseTester = _
presenter.Strokes.GetIncrementalStrokeHitTester(eraserTip)
AddHandler eraseTester.StrokeHit, _
AddressOf eraseTester_StrokeHit
eraseTester.AddPoint(e.GetPosition(Me))
End Sub
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
MyBase.OnMouseMove(e)
If Not e.StylusDevice Is Nothing Or eraseTester Is Nothing Then
Return
End If
If (eraseTester.IsValid) Then
eraseTester.AddPoint(e.GetPosition(Me))
End If
End Sub
Protected Overrides Sub OnMouseLeftButtonUp(ByVal e As MouseButtonEventArgs)
MyBase.OnMouseLeftButtonUp(e)
If Not e.StylusDevice Is Nothing Then
Return
End If
eraseTester.AddPoint(e.GetPosition(Me))
RemoveHandler eraseTester.StrokeHit, _
AddressOf eraseTester_StrokeHit
eraseTester.EndHitTesting()
End Sub
// 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);
}
}
' 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.
Private Sub eraseTester_StrokeHit(ByVal sender As Object, _
ByVal args As StrokeHitEventArgs)
Dim eraseResult As StrokeCollection = _
args.GetPointEraseResults()
Dim strokesToReplace As New StrokeCollection()
strokesToReplace.Add(args.HitStroke)
' Replace the old stroke with the new one.
If eraseResult.Count > 0 Then
presenter.Strokes.Replace(strokesToReplace, eraseResult)
Else
presenter.Strokes.Remove(strokesToReplace)
End If
End Sub