Plug-ins do Reconhecedor
Um plug-in reconhecedor é um objeto que monitora o movimento da caneta tablet para gestos, manuscritos ou outros objetos.
Gestos do sistema
O objeto RealTimeStylus reconhece gestos do sistema. O objeto RealTimeStylus adiciona um objeto SystemGestureData à fila de StylusQueues em resposta aos dados que terminam o gesto, como um objeto StylusUpData para o SystemGesture. Para obter mais informações, consulte dados de plug-in e a classe RealTimeStylus.
O objeto GestureRecognizer
O objeto GestureRecognizer implementa as interfaces IStylusSyncPlugin e IStylusAsyncPlugin. O objeto GestureRecognizer reconhece gestos de aplicativo. Internamente, o objeto GestureRecognizer usa o reconhecimento de gestos da Microsoft para executar o reconhecimento de gestos.
Quando o objeto GestureRecognizer reconhece um gesto, ele adiciona dados de caneta personalizados à fila StylusQueues em resposta ao objeto StylusUpData para o traço. A propriedade CustomStylusDataCustomDataId do objeto é definida como o valor GestureRecognitionDataGuid e a propriedade Data do objeto CustomStylusData contém um objeto GestureRecognitionData.
O diagrama a seguir ilustra como o objeto GestureRecognizer adiciona dados aos dados da caneta tablet.
Neste diagrama, o círculo com letra "SD" representa um objeto StylusDownData e os círculos com letras "P" representam packetsData objetos que já foram adicionados à fila de saída do objeto RealTimeStylus e que ainda não foram enviados para a coleção de plug-in assíncrona. O círculo com letra "SU" representa um objeto StylusUpData que o objeto RealTimeStylus está sendo processado no momento. Ele é enviado para a coleção de plug-in síncrono e colocado na fila de saída. Os círculos com letras "GR" representam dados de caneta personalizados adicionados à fila de entrada pelo GestureRecognizer plug-in em resposta à notificação de caneta associada a "SU". Os dados de caneta personalizados com letra "GR" são então passados para os plug-ins síncronos e, em seguida, para a fila de saída antes que os próximos dados da caneta tablet sejam processados. O círculo vazio representa a posição na fila de saída em que os dados futuros da caneta tablet são adicionados.
Por padrão, o objeto GestureRecognizer reconhece apenas gestos de traço único; no entanto, o objeto GestureRecognizer pode ser definido para reconhecer gestos multistroke. Para gestos multistroke, o objeto CustomStylusData é adicionado à fila StylusQueues em resposta ao objeto StylusUpData para o traço final do gesto. Ao reconhecer gestos de vários toques, você pode receber notificações para sobreposição de conjuntos de traços. Por exemplo, o primeiro e o segundo traços juntos podem ser reconhecidos como um gesto e o segundo traço por si só pode ser reconhecido como um gesto. Para obter mais informações sobre o reconhecimento de gestos de vários pressionamentos, consulte a classe GestureRecognizer e a propriedade MaxStrokeCount.
Se você estiver usando o objeto GestureRecognizer para reconhecimento de gestos multistroke, poderá obter um desempenho ideal usando um modelo deRealTimeStylus em cascata e anexando o objeto GestureRecognizer ao objeto secundário RealTimeStylus. Para obter mais informações sobre o modelo de RealTimeStylus em cascata, consulte o modelo Em cascata RealTimeStylus.
Considerações especiais
A lista a seguir descreve outros pontos a serem considerados ao usar o objeto GestureRecognizer.
- Você não deve anexar um objeto GestureRecognizer a mais de um objeto RealTimeStylus. Depois que dois objetos RealTimeStylus aos quais o objeto GestureRecognizer está habilitado, ocorre o seguinte.
- O objeto GestureRecognizer gera uma exceção em resposta à segunda chamada ao método RealTimeStylusEnabled.
- O segundo objeto RealTimeStylus habilitado gera um objeto ErrorData e notifica os plug-ins restantes em suas coleções de plug-in do erro.
- O objeto GestureRecognizer deixa de reconhecer gestos.
- O objetoRealTimeStylus gera uma exceção quando seu método AddCustomStylusDataToQueue é chamado com o guid parâmetro definido como Microsoft.StylusInput.GestureRecognizer.GestureRecognitionDataGuid identificador global exclusivo (GUID).
- O objeto GestureRecognizer é implementado como um wrapper COM (Component Object Model) e você não pode chamar seus métodos de interface IStylusSyncPlugin ou IStylusAsyncPlugin diretamente. Para obter mais informações sobre a implementação de COM e o objeto RealTimeStylus, consulte Notas de Implementação para as APIs stylusInput.
Reconhecimento de Gesto Personalizado
Você pode criar um plug-in de reconhecedor personalizado que reconhece manuscritos, gestos ou outros objetos:
- Passando as informações de traço para um objeto Recognizer existente e usando o método AddCustomStylusDataToQueue para adicionar os resultados ao fluxo de dados da caneta tablet.
- Executando o reconhecimento em seu plug-in e usando o método AddCustomStylusDataToQueue para adicionar os resultados ao fluxo de dados da caneta tablet.
Tópicos relacionados
-
linha do tempo de mensagens do mouse e eventos do sistema