识别器插件
识别器插件是一个对象,用于监视平板电脑笔的移动,以查找手势、手写或其他对象。
系统手势
RealTimeStylus 对象识别系统手势。 RealTimeStylus 对象将 SystemGestureData 对象添加到 StylusQueues 队列,以响应完成手势的数据,例如 SystemGesture 的 StylusUpData 对象。 有关详细信息,请参阅 插件数据和 RealTimeStylus 类。
GestureRecognizer 对象
GestureRecognizer 对象实现 IStylusSyncPlugin 和 IStylusAsyncPlugin 接口。 GestureRecognizer 对象识别应用程序手势。 在内部, GestureRecognizer 对象使用 Microsoft 手势识别器来执行手势识别。
当 GestureRecognizer 对象识别手势时,它会将自定义触笔数据添加到 StylusQueues 队列,以响应笔划的 StylusUpData 对象。 CustomStylusData 对象的 CustomDataId 属性设置为 GestureRecognitionDataGuid 值,CustomStylusData 对象的 Data 属性包含一个 GestureRecognitionData 对象。
下图演示 了 GestureRecognizer 对象如何将数据添加到平板电脑笔数据。
在此图中,带“SD”的圆圈表示一个 StylusDownData 对象,而带“P”的圆圈表示已添加到 RealTimeStylus 对象的输出队列且尚未发送到异步插件集合的 PacketsData 对象。 带“SU”的圆圈表示 RealTimeStylus 对象当前正在处理的 StylusUpData 对象。 它被发送到同步插件集合,然后放置在输出队列中。 字母为“GR”的圆圈表示由 GestureRecognizer 插件添加到输入队列的自定义触笔数据,以响应与“SU”关联的触笔向上通知。 然后,在处理下一个平板电脑笔数据之前,将自定义触笔数据(字母为“GR”)传递到同步插件,然后传递到输出队列。 空圆表示在输出队列中添加未来平板电脑笔数据的位置。
默认情况下, GestureRecognizer 对象仅识别单笔划手势;但是,可以设置 GestureRecognizer 对象来识别多击手势。 对于多击手势, CustomStylusData 对象将添加到 StylusQueues 队列中,以响应笔势最后笔划的 StylusUpData 对象。 识别多击手势时,可能会收到有关重叠笔划集的通知。 例如,第一个和第二个笔划可以一起识别为一个手势,第二个笔划本身可以识别为一个手势。 有关多击笔势识别的详细信息,请参阅 GestureRecognizer 类和 MaxStrokeCount 属性。
如果使用 GestureRecognizer 对象进行多击手势识别,则可以通过使用级联 RealTimeStylus 模型并将 GestureRecognizer 对象附加到辅助 RealTimeStylus 对象来实现最佳性能。 有关级联 RealTimeStylus 模型的详细信息,请参阅 级联 RealTimeStylus 模型。
特殊注意事项
以下列表描述了使用 GestureRecognizer 对象时要考虑的其他要点。
- 不应将 GestureRecognizer 对象附加到多个 RealTimeStylus 对象。 启用将 GestureRecognizer 对象附加到的两个 RealTimeStylus 对象后,将发生以下情况。
- GestureRecognizer 对象将引发异常,以响应对其 RealTimeStylusEnabled 方法的第二次调用。
- 启用的第二个 RealTimeStylus 对象将生成 ErrorData 对象,并通知错误插件集合中的剩余插件。
- GestureRecognizer 对象停止识别手势。
- 当将 guid 参数设置为 Microsoft.StylusInput.GestureRecognizer.GestureRecognizer.GestureRecognitionDataGuid 全局唯一标识符 (GUID) 调用其 AddCustomStylusDataToQueue 方法时,RealTimeStylus 对象将引发异常。
- GestureRecognizer 对象作为组件对象模型实现 (COM) 包装器,不能直接调用其 IStylusSyncPlugin 或 IStylusAsyncPlugin 接口方法。 有关 COM 实现和 RealTimeStylus 对象的详细信息,请参阅 StylusInput API 的实现说明。
自定义手势识别
可以通过以下方式创建自定义识别器插件来识别手写、手势或其他对象:
- 将笔划信息传递到现有 识别器 对象,并使用 AddCustomStylusDataToQueue 方法将结果添加到平板电脑笔数据流。
- 在插件中执行识别,并使用 AddCustomStylusDataToQueue 方法将结果添加到平板电脑笔数据流。
相关主题