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 StylusQueues em resposta aos dados que terminam o gesto, como um objeto StylusUpData para 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 reconhecedor 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 CustomDataId do objeto CustomStylusData é 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, a letra circular "SD" representa um objeto StylusDownData e os círculos com letras "P" representam objetos PacketsData que já foram adicionados à fila de saída do objeto RealTimeStylus e que ainda não foram enviados para a coleção de plug-ins assíncrona. A letra circular "SU" representa um objeto StylusUpData que o objeto RealTimeStylus está processando no momento. Ele é enviado para a coleção de plug-ins síncronos e colocado na fila de saída. Os círculos com letras "GR" representam dados de caneta personalizados adicionados à fila de entrada pelo plug-in GestureRecognizer 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 multistroke, você pode receber notificações para conjuntos sobrepostos 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 multistroke, consulte a classe GestureRecognizer e a propriedade MaxStrokeCount .
Se você estiver usando o objeto GestureRecognizer para reconhecimento de gestos multistroke, poderá obter o desempenho ideal usando um modelo RealTimeStylus em cascata e anexando o objeto GestureRecognizer ao objeto RealTimeStylus secundário. Para obter mais informações sobre o modelo RealTimeStylus em cascata, consulte O modelo RealTimeStylus em cascata.
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á anexado estiverem habilitados, ocorrerá o seguinte.
- O objeto GestureRecognizer gera uma exceção em resposta à segunda chamada ao método RealTimeStylusEnabled.
- O segundo objeto RealTimeStylus que foi habilitado gera um objeto ErrorData e notifica os plug-ins restantes em suas coleções de plug-ins do erro.
- O objeto GestureRecognizer para de reconhecer gestos.
- O objeto RealTimeStylus gera uma exceção quando seu método AddCustomStylusDataToQueue é chamado com o parâmetro guid 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 com e o objeto RealTimeStylus , consulte Notas de implementação para as APIs StylusInput.
Reconhecimento de Gestos Personalizados
Você pode criar um plug-in de reconhecedor personalizado que reconheça manuscrito, 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