Complementos de Recognizer
Un complemento de reconocedor es un objeto que supervisa el movimiento del lápiz de tableta para gestos, escritura a mano u otros objetos.
Gestos del sistema
El objeto RealTimeStylus reconoce gestos del sistema. El objeto RealTimeStylus agrega un objeto SystemGestureData a la cola StylusQueues en respuesta a los datos que finalizan el gesto, como un objeto StylusUpData para SystemGesture. Para obtener más información, vea Datos de complemento y la clase RealTimeStylus.
El objeto GestureRecognizer
El objeto GestureRecognizer implementa las interfaces IStylusSyncPlugin e IStylusAsyncPlugin . El objeto GestureRecognizer reconoce gestos de aplicación. Internamente, el objeto GestureRecognizer usa el reconocedor de gestos de Microsoft para realizar el reconocimiento de gestos.
Cuando el objeto GestureRecognizer reconoce un gesto, agrega datos de lápiz personalizados a la cola StylusQueues en respuesta al objeto StylusUpData del trazo. La propiedad CustomDataId del objeto CustomStylusData se establece en el valor GestureRecognitionDataGuid y la propiedad Data del objeto CustomStylusData contiene un objeto GestureRecognitionData.
En el diagrama siguiente se muestra cómo el objeto GestureRecognizer agrega datos a los datos del lápiz de tableta.
En este diagrama, el círculo con letra "SD" representa un objeto StylusDownData y los círculos con letra "P" representan objetos PacketsData 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 letras "SU" representa un objeto StylusUpData que el objeto RealTimeStylus está procesando actualmente. Se envía a la colección de complementos sincrónica y, a continuación, se coloca en la cola de salida. Los círculos con letras "GR" representan datos de lápiz óptico personalizados agregados a la cola de entrada por el complemento GestureRecognizer en respuesta a la notificación de lápiz ascendente asociada a "SU". Los datos de lápiz personalizados con letra "GR" se pasan a los complementos sincrónicos y, a continuación, a la cola de salida antes de que se procesen los siguientes datos del lápiz de tableta. El círculo vacío representa la posición de la cola de salida donde se agregan datos futuros del lápiz de tableta.
De forma predeterminada, el objeto GestureRecognizer solo reconoce gestos de un solo trazo; Sin embargo, el objeto GestureRecognizer se puede establecer para reconocer gestos de varias pulsaciones. Para los gestos de varias pulsaciones, el objeto CustomStylusData se agrega a la cola StylusQueues en respuesta al objeto StylusUpData para el trazo final del gesto. Al reconocer gestos de varias pulsaciones, puede recibir notificaciones para conjuntos de trazos superpuestos. Por ejemplo, los trazos primero y segundo juntos se pueden reconocer como un gesto y el segundo trazo por sí mismo se puede reconocer como un gesto. Para obtener más información sobre el reconocimiento de gestos de varias pulsaciones, vea la clase GestureRecognizer y la propiedad MaxStrokeCount .
Si usa el objeto GestureRecognizer para el reconocimiento de gestos de varias pulsaciones, puede lograr un rendimiento óptimo mediante un modelo RealTimeStylus en cascada y adjuntar el objeto GestureRecognizer al objeto RealTimeStylus secundario. Para obtener más información sobre el modelo realTimeStylus en cascada, vea El modelo Cascaded RealTimeStylus.
Consideraciones especiales
En la lista siguiente se describen otros puntos que se deben tener en cuenta al usar el objeto GestureRecognizer .
- No debe adjuntar un objeto GestureRecognizer a más de un objeto RealTimeStylus . Una vez que se habilitan dos objetos RealTimeStylus a los que está habilitado el objeto GestureRecognizer , se produce lo siguiente.
- El objeto GestureRecognizer produce una excepción en respuesta a la segunda llamada a su método RealTimeStylusEnabled.
- El segundo objeto RealTimeStylus que se ha habilitado genera un objeto ErrorData y notifica los complementos restantes en sus colecciones de complementos del error.
- El objeto GestureRecognizer deja de reconocer gestos.
- El objeto RealTimeStylus produce una excepción cuando se llama a su método AddCustomStylusDataToQueue con el parámetro guid establecido en microsoft.StylusInput.GestureRecognizer.GestureRecognitionDataGuid identificador único global (GUID).
- El objeto GestureRecognizer se implementa como contenedor de modelo de objetos componentes (COM) y no se puede llamar directamente a sus métodos de interfaz IStylusSyncPlugin o IStylusAsyncPlugin . Para obtener más información sobre la implementación COM y el objeto RealTimeStylus , vea Notas de implementación para las API de StylusInput.
Reconocimiento de gestos personalizados
Puede crear un complemento de reconocedor personalizado que reconozca la escritura a mano, los gestos u otros objetos mediante:
- Pasar la información del trazo a un objeto Recognizer existente y usar el método AddCustomStylusDataToQueue para agregar los resultados al flujo de datos del lápiz de tableta.
- Realizar el reconocimiento dentro del complemento y usar el método AddCustomStylusDataToQueue para agregar los resultados al flujo de datos del lápiz de tableta.
Temas relacionados