RawStylusInput 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供有关从 a 到 a StylusDeviceStylusPlugIn的输入的信息。
public ref class RawStylusInput
public class RawStylusInput
type RawStylusInput = class
Public Class RawStylusInput
- 继承
-
RawStylusInput
示例
以下示例创建一个 StylusPlugIn 检查手势的 Down 控件。 StylusPlugIn要订阅NotifyWhenProcessed的方法的调用OnStylusUpOnStylusUpProcessed,该方法是从应用程序线程调用的。
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
注解
使用
属性
| 名称 | 说明 |
|---|---|
| StylusDeviceId |
获取当前触笔设备的标识符。 |
| TabletDeviceId |
获取当前平板电脑设备的标识符。 |
| Timestamp |
获取输入发生的时间。 |
方法
| 名称 | 说明 |
|---|---|
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetStylusPoints() |
获取从触笔收集的触笔点。 |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| NotifyWhenProcessed(Object) |
订阅应用程序线程的相应触笔方法。 |
| SetStylusPoints(StylusPointCollection) |
设置传递给应用程序线程的触笔点。 |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |