IncrementalHitTester Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Realiza dinamicamente testes de acerto num Stroke.
public ref class IncrementalHitTester abstract
public abstract class IncrementalHitTester
type IncrementalHitTester = class
Public MustInherit Class IncrementalHitTester
- Herança
-
IncrementalHitTester
- Derivado
Exemplos
O exemplo seguinte demonstra como adicionar pontos quando IncrementalHitTester o utilizador insere dados com a caneta. O exemplo inclui um StrokeHit gestor de eventos que apaga a parte do Stroke que o utilizador intersecta. Para criar um controlo que permita ao utilizador apagar tinta, veja Como: Apagar Tinta num Controlo Personalizado.
// 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
Observações
O IncrementalHitTester determina dinamicamente se o utilizador "acerta" num Stroke. Esta classe permite-lhe fornecer feedback imediato ao utilizador em situações como selecionar e apagar tinta.
Existem duas classes que herdam de IncrementalHitTester:
O IncrementalLassoHitTester golpe testa os traços determinando se um percurso de laço o rodeia.
O IncrementalStrokeHitTester acerto testa os traços determinando onde o caminho da borracha o cruza.
A tabela seguinte lista onde aprender a gerir tinta digital num controlo personalizado.
| Para fazer isto… | Veja este artigo |
|---|---|
| Crie um controlo que recolha tinta digital | Criação de um Controlo de Entrada de Tinta |
| Crie um controlo que permita ao utilizador selecionar tinta | Como: Selecionar Tinta a partir de um Controlo Personalizado |
| Crie um controlo que permita ao utilizador apagar a tinta por apagamento pontual | Como: Apagar Tinta num Controlo Personalizado |
Utilização de Texto XAML
Esta classe não é normalmente usada em XAML.
Propriedades
| Name | Description |
|---|---|
| IsValid |
Percebe se é IncrementalHitTester um teste de acerto. |
Métodos
| Name | Description |
|---|---|
| AddPoint(Point) |
Adiciona um Point ao IncrementalHitTester. |
| AddPoints(IEnumerable<Point>) |
Adiciona pontos ao IncrementalHitTester. |
| AddPoints(StylusPointCollection) |
Adiciona os objetos especificados StylusPoint ao IncrementalHitTester. |
| AddPointsCore(IEnumerable<Point>) |
Adiciona pontos ao IncrementalHitTester. |
| EndHitTesting() |
Liberta recursos utilizados pelo IncrementalHitTester. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |