Compartir a través de


Arquitectura de las API de StylusInput

Las API stylusInput permiten interactuar con el flujo de datos del lápiz de tableta. Para interactuar con el flujo de datos, agregue un objeto RealTimeStylus a la aplicación y agregue complementos al objeto RealTimeStylus .

Se proporcionan dos complementos en las API stylusInput. El objeto DynamicRenderer implementa la interfaz IStylusSyncPlugin . El objeto DynamicRenderer representa la entrada de lápiz en tiempo real, ya que se dibuja. El objeto GestureRecognizer implementa las interfaces IStylusSyncPlugin e IStylusAsyncPlugin . El objeto GestureRecognizer reconoce gestos de aplicación.

Definiciones

Los términos siguientes se usan en las secciones que describen las API de StylusInput:

Complemento sincrónico

Clase que implementa la interfaz IStylusSyncPlugin . Los complementos sincrónicos suelen llamarse directamente mediante el objeto RealTimeStylus .

Complemento asincrónico

Clase que implementa la interfaz IStylusAsyncPlugin . Los complementos asincrónicos suelen llamarse en el subproceso de la interfaz de usuario (UI) de la aplicación.

Colección de complementos sincrónicos

Colección StylusSyncPluginCollection , que es una colección ordenada de objetos IStylusSyncPlugin . Normalmente, una colección de complementos sincrónica hace referencia a la colección asignada a la propiedad SyncPluginCollection de un objeto RealTimeStylus . Solo se pueden agregar complementos sincrónicos a una colección de complementos sincrónicas.

Colección de complementos asincrónica

Colección StylusAsyncPluginCollection , que es una colección ordenada de objetos IStylusAsyncPlugin . Normalmente, una colección de complementos asincrónica hace referencia a la colección asignada a la propiedad AsyncPluginCollection de un objeto RealTimeStylus . Solo se pueden agregar complementos asincrónicos a una colección de complementos asincrónica.

Complementos sincrónicos y asincrónicos

El objeto RealTimeStylus está diseñado para proporcionar acceso en tiempo real al flujo de datos desde un lápiz de tableta. Cree o use complementos sincrónicos para las tareas que requieren acceso en tiempo real al flujo de datos y que no son computacionalmente exigentes, como para el filtrado de paquetes. Cree o use complementos asincrónicos para tareas que no requieran acceso en tiempo real al flujo de datos, como para crear y almacenar trazos en un objeto InkDisp .

Algunas tareas pueden ser exigentes desde el punto de vista computacional, pero requieren acceso en tiempo real al flujo de datos, como el reconocimiento de gestos de varias pulsaciones. Para abordar estas necesidades, las API stylusInput proporcionan un modelo realtimeStylus en cascada que permite usar dos objetos RealTimeStylus , cada uno que se ejecuta en su propio subproceso. Para obtener más información sobre el modelo RealTimeStylus en cascada, vea El modelo Cascaded RealTimeStylus.

Para obtener más información sobre el uso y la creación de complementos, consulte Trabajar con las API de StylusInput.

Flujo de datos del lápiz de tableta

El objeto RealTimeStylus tiene dos colas internas que llevan los datos del lápiz de tableta, la cola de entrada y la cola de salida. Los datos del lápiz se convierten en instancias de las clases del espacio de nombres Microsoft.StylusInput.PluginData . En la lista siguiente se describe cómo el objeto RealTimeStylus controla los datos del lápiz de tableta:

El objeto RealTimeStylus comprueba primero los objetos de datos del complemento en su cola de entrada y, a continuación, desde el flujo de datos del lápiz de tableta.

El objeto RealTimeStylus envía un objeto de datos de complemento a los objetos de su colección de complementos sincrónica. Cada complemento sincrónico puede agregar datos a la cola de entrada o salida.

Después de enviar el objeto de datos del complemento a todos los miembros de la colección de complementos sincrónicos, el objeto de datos del complemento se coloca en la cola de salida del objeto RealTimeStylus .

A continuación, el objeto RealTimeStylus comprueba si se va a procesar el siguiente objeto de datos del complemento.

Aunque la cola de salida del objeto RealTimeStylus contiene datos, el objeto RealTimeStylus envía un objeto de datos de complemento desde su cola de salida a los objetos de su colección de complementos asincrónica. Cada complemento asincrónico puede agregar datos a la cola de entrada o salida. Sin embargo, dado que los complementos asincrónicos se ejecutan en el subproceso de la interfaz de usuario, los datos se agregan a la cola en relación con los datos del lápiz actual que el objeto RealTimeStylus está procesando y no en relación con los datos que el complemento asincrónico está procesando.

En el diagrama siguiente se muestra el flujo de datos del lápiz de tableta a través del objeto RealTimeStylus y sus colecciones de complementos.

flujo de datos del lápiz de tableta a través del objeto realtimestylus y sus colecciones de complementos

En este diagrama, los círculos etiquetados como "A" y "B" representan datos de lápiz de tableta que ya se han agregado a la cola de salida del objeto RealTimeStylus y que aún no se han enviado a la colección de complementos asincrónica. El círculo con la etiqueta "C" representa los datos del lápiz de tableta que el objeto RealTimeStylus está procesando actualmente. Se envía a la colección de complementos sincrónica y se coloca en la cola de salida. El círculo vacío representa la posición de la cola de salida donde se agregan datos futuros del lápiz de tableta.

Para obtener más información sobre cómo se agregan datos específicos a la cola y se procesan, vea Datos de complemento y la clase RealTimeStylus.

Las API de StylusInput

Las API de StylusInput residen principalmente en los espacios de nombres Microsoft.StylusInput y Microsoft.StylusInput.PluginData . Sin embargo, las API StylusInput también hacen referencia a algunas clases en el espacio de nombres Microsoft.Ink , como la clase Tablet , la colección TabletPropertyDescriptionCollection y las enumeraciones ApplicationGesture y SystemGesture .

DynamicRenderer

GestureRecognizer

RealTimeStylus

IStylusAsyncPlugin

IStylusSyncPlugin

Trabajar con las API de StylusInput

El modelo Cascaded RealTimeStylus