Considerações de design para a API StylusInput
A seguir estão as considerações de design para a API StylusInput.
Você pode atualizar a propriedade WindowInputRectangle do objetoRealTimeStylus e a propriedadeClipRectangle do objetoDynamicRenderer enquanto a caneta estiver inativa. Isso pode ser útil quando você deseja ter uma área de desenho dinâmica enquanto o aplicativo está coletando tinta.
Para otimizar a reutilização e a manutenção do código do plug-in, os plug-ins não devem fazer chamadas diretamente para o aplicativo, mas devem usar o CustomStylusData (objeto CustomeStylusData em código gerenciado) para se comunicar com o aplicativo.
As coleções de plug-in do RealTimeStylus objeto são ordenadas. A posição relativa dos seus plug-ins dentro dessas coleções pode ser muito importante. Por exemplo, um plug-in que modifica informações de pacote provavelmente deve ser adicionado à coleção de plug-in síncrono antes de um plug-in de renderizador dinâmico.
A capacidade de adicionar dados personalizados da caneta ao fluxo de dados da caneta eletrônica deve ser usada com moderação. Use esse recurso somente se outro plug-in precisar receber essas informações como parte do fluxo de dados. Além disso, evite adicionar dados personalizados da caneta em resposta a outros dados da caneta personalizada que entram no plug-in, pois isso pode criar um loop infinito.
As coleções de plug-ins podem ser modificadas enquanto o objetoRealTimeStylusestá habilitado; no entanto, isso pode tornar o comportamento do seu aplicativo mais difícil de prever. Quando um plug-in é adicionado enquanto o objeto RealTimeStylus está habilitado, o objeto RealTimeStylus chama Microsoft.StylusInput.IStylusSyncPlugin do plug-in. método RealTimeStylusEnabled (o Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled ou o método Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled em código gerenciado). Quando um plug-in é removido enquanto o objeto RealTimeStylus está habilitado, o objeto RealTimeStylus chama o métodoRealTimeStylusDisabled do plug-in (o Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled ou o método Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusDisabled em código gerenciado). Isso permite que o plug-in mantenha seu estado adequado sem ter que verificar a propriedade Enabled do objeto RealTimeStylus. Quando um plug-in é adicionado enquanto o objeto RealTimeStylus está habilitado, os dados do plug-in que o plug-in recebe podem não conter informações suficientes para estabelecer adequadamente o contexto dos dados iniciais. Por exemplo, o plug-in recém-adicionado pode começar a receber dados de pacotes de uma caneta com curso médio. Da mesma forma, quando um plug-in removido enquanto o objeto RealTimeStylus está habilitado, os dados do plug-in que o plug-in recebeu podem ser insuficientes para concluir o processamento dos dados.
Nota
Para estabilidade geral, redefina o estado interno de um plug-in quando seu RealTimeStylusEnabled ou método RealTimeStylusDisabled for chamado.
O objeto RealTimeStylus lança uma exceção se um plug-in modifica a coleção de plug-ins à qual ele está anexado. Isso acontece somente quando o plug-in faz isso enquanto está sendo chamado pelo objeto RealTimeStylus como membro dessa coleção.