Aracılığıyla paylaş


IncrementalHitTester.AddPoint(Point) Yöntem

Tanım

öğesine IncrementalHitTesterbir Point ekler.

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)

Parametreler

point
Point

Point öğesine eklenecek öğesini seçinIncrementalHitTester.

Örnekler

Aşağıdaki örnekte, kullanıcı fareyle veri girişinde noktaların nasıl ekleneceği IncrementalHitTester gösterilmektedir. Örnek, kullanıcının kesiştiği bölümü Stroke silen bir StrokeHit olay işleyicisi içerir. Kullanıcının mürekkep silmesine olanak tanıyan bir denetim oluşturmak için bkz . Nasıl yapılır: Özel Denetimde Mürekkeli Silme.

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

Şunlara uygulanır