Compartilhar via


Considerações de design para a API StylusInput

Veja a seguir as considerações de design para a API StylusInput.

  • Você pode atualizar a propriedade WindowInputRectangle do objeto RealTimeStylus e a propriedade ClipRectangle do objeto DynamicRenderer enquanto a caneta está 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 de plug-in, os plug-ins não devem fazer chamadas diretamente para o aplicativo, mas devem usar o CustomStylusData (objeto CustomeStylusData no código gerenciado) para se comunicar com o aplicativo.

  • As coleções de plug-ins do objeto RealTimeStylus são ordenadas. A posição relativa dos 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-ins síncrona antes de um plug-in de renderizador dinâmico.

  • A capacidade de adicionar dados de caneta personalizados ao fluxo de dados da caneta tablet 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 de caneta personalizados em resposta a outros dados de caneta personalizados que entram no plug-in, pois isso pode criar um loop infinito.

  • As coleções de plug-ins podem ser modificadas enquanto o objeto RealTimeStylus está habilitado; no entanto, isso pode dificultar a previsão do comportamento do aplicativo. Quando um plug-in é adicionado enquanto o objeto RealTimeStylus está habilitado, o objeto RealTimeStylus chama o Microsoft.StylusInput.IStylusSyncPlugin do plug-in. Método RealTimeStylusEnabled (o método Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled ou o método Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled no código gerenciado). Quando um plug-in é removido enquanto o objeto RealTimeStylus está habilitado, O objeto RealTimeStylus chama o método RealTimeStylusDisabled do plug-in (o método Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled ou o método Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusDisabled no código gerenciado). Isso permite que o plug-in mantenha seu estado adequado sem precisar marcar a propriedade Enabled do objeto RealTimeStylus. Quando um plug-in é adicionado enquanto o objeto RealTimeStylus está habilitado, os dados de plug-in recebidos pelo plug-in 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 pacote de uma caneta que está no meio do traço. Da mesma forma, quando um plug-in é removido enquanto o objeto RealTimeStylus está habilitado, os dados de plug-in que o plug-in recebeu podem ser insuficientes para concluir o processamento dos dados.

    Observação

    Para estabilidade geral, redefina o estado interno de um plug-in quando o método RealTimeStylusEnabled ou RealTimeStylusDisabled for chamado.

     

  • O objeto RealTimeStylus gerará uma exceção se um plug-in modificar a coleção de plug-in à qual ele está anexado. Isso só acontece quando o plug-in faz isso enquanto está sendo chamado pelo objeto RealTimeStylus como um membro dessa coleção.