IncrementalHitTester 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
動態地對 . 進行命中測試 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。
屬性
| 名稱 | Description |
|---|---|
| IsValid |
判斷是否 IncrementalHitTester 被擊中測試。 |
方法
| 名稱 | Description |
|---|---|
| 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) |