Arquitetura das APIs stylusInput
As APIs stylusInput permitem que você interaja com o fluxo de dados da caneta tablet. Para interagir com o fluxo de dados, adicione um objeto RealTimeStylus ao aplicativo e adicione plug-ins ao objeto RealTimeStylus.
Dois plug-ins são fornecidos nas APIs stylusInput. O objeto DynamicRenderer implementa a interfaceIStylusSyncPlugin. O objeto DynamicRenderer renderiza a tinta em tempo real, pois ela está sendo desenhada. O objeto GestureRecognizer implementa as interfaces IStylusSyncPlugin e IStylusAsyncPlugin. O objeto GestureRecognizer reconhece gestos de aplicativo.
Definições
Os termos a seguir são usados nas seções que descrevem as APIs stylusInput:
Plug-in síncrono
Uma classe que implementa a interface IStylusSyncPlugin. Plug-ins síncronos geralmente são chamados diretamente pelo objetoRealTimeStylus.
Plug-in assíncrono
Uma classe que implementa a interfaceIStylusAsyncPlugin. Plug-ins assíncronos geralmente são chamados no thread da interface do usuário do aplicativo.
Coleção de plug-ins síncrona
Uma coleção StylusSyncPluginCollection, que é uma coleção ordenada de objetos IStylusSyncPlugin. Uma coleção de plug-ins síncrona geralmente se refere à coleção atribuída à propriedade SyncPluginCollection de um objeto RealTimeStylus. Somente plug-ins síncronos podem ser adicionados a uma coleção de plug-ins síncrona.
Coleção de plug-ins assíncrona
Uma coleção StylusAsyncPluginCollection, que é uma coleção ordenada de objetos IStylusAsyncPlugin. Uma coleção de plug-ins assíncrona geralmente se refere à coleção atribuída à propriedade AsyncPluginCollection de um objeto RealTimeStylus. Somente plug-ins assíncronos podem ser adicionados a uma coleção de plug-ins assíncrona.
Plug-ins síncronos e assíncronos
O objeto RealTimeStylus foi projetado para fornecer acesso em tempo real ao fluxo de dados de uma caneta tablet. Crie ou use plug-ins síncronos para tarefas que exigem acesso em tempo real ao fluxo de dados e são computacionalmente não gerenciados, como para filtragem de pacotes. Crie ou use plug-ins assíncronos para tarefas que não exigem acesso em tempo real ao fluxo de dados, como criar e armazenar traços em um objetoInkDisp.
Determinadas tarefas podem ser computacionalmente exigentes, mas exigem acesso em tempo real ao fluxo de dados, como o reconhecimento de gestos de vários pressionamentos. Para atender a essas necessidades, as APIs stylusInput fornecem um modelo RealTimeStylus em cascata que permite que você use dois objetos RealTimeStylus, cada um em execução em seu próprio thread. Para obter mais informações sobre o modelo de RealTimeStylus em cascata, consulte o modelo Em cascata RealTimeStylus.
Para obter mais informações sobre como usar e criar plug-ins, consulte Trabalhando com as APIs stylusInput.
O fluxo de dados da caneta tablet
O objeto RealTimeStylus tem duas filas internas que carregam os dados da caneta tablet, a fila de entrada e a fila de saída. Os dados de caneta são convertidos em instâncias das classes no namespace Microsoft.StylusInput.PluginData. A lista a seguir descreve como o objeto RealTimeStylus manipula os dados da caneta tablet:
O objeto RealTimeStylus verifica se há objetos de dados plug-in primeiro em sua fila de entrada e depois no fluxo de dados da caneta tablet.
O objeto RealTimeStylus envia um objeto de dados plug-in para os objetos em sua coleção de plug-in síncrona. Cada plug-in síncrono pode adicionar dados à fila de entrada ou saída.
Depois que o objeto de dados do plug-in tiver sido enviado a todos os membros da coleção de plug-in síncrono, o objeto de dados do plug-in será colocado na fila de saída do RealTimeStylus objeto.
O objeto RealTimeStylus, em seguida, verifica se o próximo objeto de dados de plug-in será processado.
Embora a fila de saída do RealTimeStylus objeto contenha dados, o objeto RealTimeStylus envia um objeto de dados plug-in de sua fila de saída para os objetos em sua coleção de plug-in assíncrona. Cada plug-in assíncrono pode adicionar dados à fila de entrada ou saída. No entanto, como os plug-ins assíncronos são executados no thread da interface do usuário, os dados são adicionados à fila em relação aos dados de caneta atuais que o RealTimeStylus objeto está processando e não em relação aos dados que o plug-in assíncrono está processando.
O diagrama a seguir ilustra o fluxo de dados de caneta tablet por meio do objeto RealTimeStylus e suas coleções de plug-in.
Neste diagrama, os círculos rotulados como "A" e "B" representam dados de caneta tablet que já foram adicionados ao RealTimeStylus fila de saída do objeto e que ainda não foram enviados para a coleção de plug-ins assíncrona. O círculo rotulado como "C" representa os dados da caneta tablet que o objeto RealTimeStylus está processando no momento. Ele é enviado para a coleção de plug-in síncrono e colocado na fila de saída. O círculo vazio representa a posição na fila de saída em que os dados futuros da caneta tablet são adicionados.
Para obter mais informações sobre como dados específicos são adicionados à fila e processados, consulte dados de plug-in e a classe RealTimeStylus.
As APIs stylusInput
As APIs stylusInput residem principalmente nos namespaces Microsoft.StylusInput e Microsoft.StylusInput.PluginData. No entanto, as APIs stylusInput também fazem referência a algumas classes no namespace Microsoft.Ink, como a classe Tablet, a coleção TabletPropertyDescriptionCollection e a ApplicationGesture e SystemGesture enumerações.
Tópicos relacionados