RawStylusInput Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce informazioni sull'input da un StylusDevice oggetto a un oggetto StylusPlugIn.
public ref class RawStylusInput
public class RawStylusInput
type RawStylusInput = class
Public Class RawStylusInput
- Ereditarietà
-
RawStylusInput
Esempio
Nell'esempio seguente viene creato un oggetto StylusPlugIn che verifica la presenza del Down movimento. Chiama StylusPlugInNotifyWhenProcessed in OnStylusUp per sottoscrivere il OnStylusUpProcessed metodo , chiamato dal thread dell'applicazione.
class RecognizerPlugin : StylusPlugIn
{
GestureRecognizer recognizer;
// StylusPointCollection that contains the stylus points of the current
// stroke.
StylusPointCollection points;
// Keeps track of the stylus to check whether two styluses are used on the
// digitizer.
int currentStylus;
public RecognizerPlugin()
: base()
{
recognizer = new GestureRecognizer();
}
// Collect the points as the user draws the stroke.
protected override void OnStylusDown(RawStylusInput rawStylusInput)
{
// If points is not null, there is already a stroke taking place
// on the digitizer, so don't create a new StylusPointsCollection.
if (points == null)
{
points = new StylusPointCollection(rawStylusInput.GetStylusPoints().Description);
points.Add(rawStylusInput.GetStylusPoints());
currentStylus = rawStylusInput.StylusDeviceId;
}
}
// Collect the points as the user draws the stroke.
protected override void OnStylusMove(RawStylusInput rawStylusInput)
{
// Check whether the stylus that started the stroke is the same, and
// that the element hasn't lost focus since the stroke began.
if (points != null && currentStylus == rawStylusInput.StylusDeviceId)
{
points.Add(rawStylusInput.GetStylusPoints());
}
}
// Collect the points as the user draws the stroke.
protected override void OnStylusUp(RawStylusInput rawStylusInput)
{
// Check whether the stylus that started the stroke is the same, and
// that the element hasn't lost focus since the stroke began.
if (points != null && currentStylus == rawStylusInput.StylusDeviceId)
{
points.Add(rawStylusInput.GetStylusPoints());
// Subscribe to the OnStylusUpProcessed method.
rawStylusInput.NotifyWhenProcessed(points);
}
points = null;
currentStylus = 0;
}
// If the element loses focus, stop collecting the points and don't
// perform gesture recognition.
protected override void OnStylusLeave(RawStylusInput rawStylusInput, bool confirmed)
{
if (confirmed)
{
// Clear the StylusPointCollection
points = null;
currentStylus = 0;
}
}
// This method is called on the application thread.
protected override void OnStylusUpProcessed(object callbackData, bool targetVerified)
{
// Check that the element actually receive the OnStylusUp input.
if (targetVerified && recognizer.IsRecognizerAvailable)
{
StylusPointCollection strokePoints = callbackData as StylusPointCollection;
if (strokePoints == null)
{
return;
}
// Create a StrokeCollection to pass to the GestureRecognizer.
Stroke newStroke = new Stroke(strokePoints);
StrokeCollection strokes = new StrokeCollection();
strokes.Add(newStroke);
ReadOnlyCollection<GestureRecognitionResult> results = recognizer.Recognize(strokes);
// If the GestureRecognizer recognizes the stroke as a Down
// gesture with strong confidence, raise an event.
if (results[0].ApplicationGesture == ApplicationGesture.Down &&
results[0].RecognitionConfidence == RecognitionConfidence.Strong)
{
//raise event
}
}
}
}
Class RecognizerPlugin
Inherits StylusPlugIn
Private recognizer As GestureRecognizer
' StylusPointCollection that contains the stylus points of the current
' stroke.
Private points As StylusPointCollection
' Keeps track of the stylus to check whether two styluses are used on the
' digitizer.
Private currentStylus As Integer
Public Sub New()
recognizer = New GestureRecognizer()
End Sub
' Collect the points as the user draws the stroke.
Protected Overrides Sub OnStylusDown(ByVal rawStylusInput As RawStylusInput)
' If points is not null, there is already a stroke taking place
' on the digitizer, so don't create a new StylusPointsCollection.
If points Is Nothing Then
points = New StylusPointCollection(rawStylusInput.GetStylusPoints().Description)
points.Add(rawStylusInput.GetStylusPoints())
currentStylus = rawStylusInput.StylusDeviceId
End If
End Sub
' Collect the points as the user draws the stroke.
Protected Overrides Sub OnStylusMove(ByVal rawStylusInput As RawStylusInput)
' Check whether the stylus that started the stroke is the same, and
' that the element hasn't lost focus since the stroke began.
If Not (points Is Nothing) AndAlso currentStylus = rawStylusInput.StylusDeviceId Then
points.Add(rawStylusInput.GetStylusPoints())
End If
End Sub
' Collect the points as the user draws the stroke.
Protected Overrides Sub OnStylusUp(ByVal rawStylusInput As RawStylusInput)
' Check whether the stylus that started the stroke is the same, and
' that the element hasn't lost focus since the stroke began.
If Not (points Is Nothing) AndAlso currentStylus = rawStylusInput.StylusDeviceId Then
points.Add(rawStylusInput.GetStylusPoints())
' Subscribe to the OnStylusUpProcessed method.
rawStylusInput.NotifyWhenProcessed(points)
End If
points = Nothing
currentStylus = 0
End Sub
' If the element loses focus, stop collecting the points and don't
' perform gesture recognition.
Protected Overrides Sub OnStylusLeave(ByVal rawStylusInput As RawStylusInput, ByVal confirmed As Boolean)
If confirmed Then
' Clear the StylusPointCollection
points = Nothing
currentStylus = 0
End If
End Sub
' This method is called on the application thread.
Protected Overrides Sub OnStylusUpProcessed(ByVal callbackData As Object, ByVal targetVerified As Boolean)
' Check that the element actually receive the OnStylusUp input.
If targetVerified AndAlso recognizer.IsRecognizerAvailable Then
Dim strokePoints As StylusPointCollection = callbackData
If strokePoints Is Nothing Then
Return
End If
' Create a StrokeCollection to pass to the GestureRecognizer.
Dim newStroke As New Stroke(strokePoints)
Dim strokes As New StrokeCollection()
strokes.Add(newStroke)
Dim results As ReadOnlyCollection(Of GestureRecognitionResult) = recognizer.Recognize(strokes)
' If the GestureRecognizer recognizes the stroke as a Down
' gesture with strong confidence, raise an event.
If results(0).ApplicationGesture = ApplicationGesture.Down AndAlso _
results(0).RecognitionConfidence = RecognitionConfidence.Strong Then
'raise event
End If
End If
End Sub
End Class
Commenti
RawStylusInput Usare per ottenere informazioni sull'input StylusPlugIn ricevuto quando l'utente sposta lo stilo.
Proprietà
| Nome | Descrizione |
|---|---|
| StylusDeviceId |
Ottiene l'identificatore del dispositivo dello stilo corrente. |
| TabletDeviceId |
Ottiene l'identificatore del dispositivo tablet corrente. |
| Timestamp |
Ottiene l'ora in cui si è verificato l'input. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetStylusPoints() |
Ottiene i punti dello stilo raccolti dallo stilo. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| NotifyWhenProcessed(Object) |
Sottoscrive i metodi dello stilo corrispondenti del thread dell'applicazione. |
| SetStylusPoints(StylusPointCollection) |
Imposta i punti dello stilo passati al thread dell'applicazione. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |