IncrementalHitTester Класс

Определение

Динамически выполняет проверку попадания для Stroke.

public ref class IncrementalHitTester abstract
public abstract class IncrementalHitTester
type IncrementalHitTester = class
Public MustInherit Class IncrementalHitTester
Наследование
IncrementalHitTester
Производный

Примеры

В следующем примере показано, как добавить точки в , IncrementalHitTester когда пользователь вводит данные с помощью пера. В этом примере содержится StrokeHit обработчик событий, который удаляет часть Stroke объекта , пересекаемую пользователем. Сведения о создании элемента управления, позволяющего пользователю удалять рукописный ввод, см. в статье Практическое руководство. Удаление рукописного ввода в пользовательском элементе управления.


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

     ' Prepare to collect stylus packets. Get the 
     ' IncrementalHitTester from the InkPresenter's 
     ' StrokeCollection and subscribe to its StrokeHitChanged event.
     Protected Overrides Sub OnStylusDown(ByVal e As StylusDownEventArgs)

         MyBase.OnStylusDown(e)

         Dim eraserTip As New EllipseStylusShape(3, 3, 0)
         eraseTester = presenter.Strokes.GetIncrementalStrokeHitTester(eraserTip)
         AddHandler eraseTester.StrokeHit, _
             AddressOf eraseTester_StrokeHit
         eraseTester.AddPoints(e.GetStylusPoints(Me))

     End Sub

     ' Collect the StylusPackets as the stylus moves.
     Protected Overrides Sub OnStylusMove(ByVal e As StylusEventArgs)

         If eraseTester.IsValid Then
             eraseTester.AddPoints(e.GetStylusPoints(Me))
         End If

     End Sub

     ' Unsubscribe from the StrokeHitChanged event when the
     ' user lifts the stylus.
     Protected Overrides Sub OnStylusUp(ByVal e As StylusEventArgs)

         eraseTester.AddPoints(e.GetStylusPoints(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.
     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

Комментарии

Динамически IncrementalHitTester определяет, попадает ли пользователь в Stroke. Этот класс позволяет немедленно оставить отзыв пользователю в таких ситуациях, как выбор и удаление рукописного ввода.

Существует два класса, которые наследуют от IncrementalHitTester:

  • Нажатие IncrementalLassoHitTester проверяет штрихи, определяя, окружает ли его путь лассо.

  • Нажатие IncrementalStrokeHitTester проверяет штрихи, определяя, где пересекается путь ластика.

В следующей таблице перечислены сведения об управлении цифровым рукописным вводом в пользовательском элементе управления.

Для этого… Статья
Создание элемента управления, который собирает цифровой рукописный ввод Создание элемента управления рукописным вводом
Создание элемента управления, позволяющего пользователю выбирать рукописный ввод Практическое руководство. Выбор рукописного ввода из пользовательского элемента управления
Создание элемента управления, который позволяет пользователю стирать рукописные фрагменты с помощью указателя Практическое руководство. Удаление данных рукописного ввода в настраиваемом элементе управления

Использование текста XAML

Этот класс обычно не используется в XAML.

Свойства

IsValid

Сообщает, выполняет ли в данный момент IncrementalHitTester проверку попаданий.

Методы

AddPoint(Point)

Добавляет объект Point в коллекцию IncrementalHitTester.

AddPoints(IEnumerable<Point>)

Добавляет точки в IncrementalHitTester.

AddPoints(StylusPointCollection)

Добавляет указанные объекты StylusPoint к IncrementalHitTester.

AddPointsCore(IEnumerable<Point>)

Добавляет точки в IncrementalHitTester.

EndHitTesting()

Освобождает ресурсы, используемые объектом IncrementalHitTester.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к