Compartilhar via


plug-ins Dynamic-Renderer

Um plug-in de renderizador dinâmico é um objeto que exibe os dados da caneta tablet em tempo real, pois eles estão sendo manipulados pelo objeto RealTimeStylus . Posteriormente, para eventos como uma atualização de formulário, o plug-in de renderizador dinâmico ou um plug-in coletor de tinta pode redesenhar a tinta.

O objeto DynamicRenderer

O objeto RealTimeStylus implementa a interface IStylusSyncPlugin . O objeto DynamicRenderer renderiza a tinta em tempo real, pois ela está sendo desenhada. Quando o método Refresh é chamado enquanto o objeto DynamicRenderer está habilitado, o objeto DynamicRenderer redesenha o traço que está sendo coletado no momento. A propriedade Enabled do objeto DynamicRenderer é inicialmente definida como FALSE.

Observação

Ao chamar o método Refresh do objeto DynamicRenderer de dentro de um manipulador de eventos Paint no código gerenciado, defina a propriedade ClipRectangle do objeto DynamicRenderer como a propriedade ClipRectangle do objeto PaintEventArgs.

 

O objeto DynamicRenderer pode armazenar temporariamente em cache dados de tinta. Para usar esse recurso no código gerenciado, defina a propriedade EnableDataCache como TRUE. Quando o objeto DynamicRenderer recebe uma chamada para o método IStylusSyncPlugin.StylusUp , ele armazena em cache os dados de traço e adiciona dados de caneta personalizados à fila de entrada em resposta ao objeto StylusUpData para o traço. A propriedade CustomDataId do objeto CustomStylusData é definida como o valor DynamicRendererCachedDataGuid e a propriedade Data do objeto CustomStylusData contém um objeto DynamicRendererCachedData. Chame o método ReleaseCachedData do objeto DynamicRenderer depois que o traço for coletado e puder ser renderizado estaticamente. Quando o método Refresh é chamado enquanto o objeto DynamicRenderer está habilitado, o objeto DynamicRenderer redesenha todos os traços armazenados em cache. Quando a propriedade DataCacheEnabled é definida como false, os dados de traço armazenados em cache são excluídos.

O diagrama a seguir ilustra como o objeto DynamicRenderer adiciona dados aos dados da caneta tablet quando a propriedade DataCacheEnabled do objeto DynamicRenderer é definida.

ilustração mostrando o fluxo de dados do dynamicrenderer

Neste diagrama, o círculo com letras "SD" representa um objeto StylusDown e os círculos com letras "P" representam objetos Packets 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. O círculo com letras "SU" representa um objeto StylusUp 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. Os círculos com letras "DR" representam dados de caneta personalizados adicionados à fila de entrada pelo plug-in DynamicRenderer em resposta à notificação de caneta associada a "SU". Os dados de caneta personalizados com letras "DR" 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. Também é representado no diagrama o plug-in coletor de tinta que chama o método ReleaseCachedData do objeto DynamicRenderer para liberar os dados de traço armazenados em cache depois que o plug-in da coleção de tintas tiver processado o traço.

Considerações especiais

A lista a seguir descreve outros pontos a serem considerados ao usar o objeto DynamicRenderer .

Renderização personalizada

Você pode criar seu próprio plug-in de renderizador dinâmico criando um plug-in síncrono que assina as notificações StylusDown, Packets e StylusUp . Em seguida, o plug-in pode renderizar o traço conforme ele está sendo desenhado. Essa pode ser uma maneira de implementar uma ferramenta de seleção que usa uma caixa de seleção ou seleção de formulário livre, por exemplo.