Coleção Ink

A coleção ink começa com o digitalizador. Um usuário coloca uma caneta no digitalizador e começa a gravar. Você pode usar os recursos de coleção de tinta da API para gerenciar a coleção de dados de tinta que "flui" da caneta. Você tem acesso a informações sobre o hardware disponível no Tablet PC por meio da coleção Tablets e do objeto Tablet . Em seguida, use o objeto InkCollector para obter os dados provenientes do digitalizador.

Tablets e o objeto Tablet

Um Tablet representa um dispositivo digitalizador do Tablet PC. Um tablet pc pode ter mais de um digitalizador. Usando o objeto Tablet , você pode consultar os dispositivos digitalizadores disponíveis que estão anexados ao Tablet PC e seus respectivos recursos de hardware. Por exemplo, você pode determinar se o Tablet com o qual você está trabalhando está integrado ao display ou se é um dispositivo externo separado.

Objeto InkCollector

O objeto InkCollector captura a entrada de tinta de dispositivos Tablet disponíveis. O objeto InkCollector coleta apenas tinta e gestos que são inseridos em uma janela específica. Um coletor de eventos muito eficiente renderiza essa entrada em tempo real. O objeto InkCollector captura a entrada e a direciona para um objeto Ink .

Observação

A colocação simultânea de tinta com várias canetas pode ou não funcionar, dependendo dos recursos de hardware do dispositivo digitalizador.

 

Como funciona o coletor de tinta

O objeto InkCollector se anexa a uma janela de aplicativo conhecida. Em seguida, ele permite que os usuários empreguem qualquer dispositivo tablet pc disponível (incluindo o mouse) para colocar tinta em tempo real nessa janela. Os traços de tinta coletados são armazenados em um objeto Ink associado. Esses traços podem ser manipulados ou enviados a um reconhecedor para reconhecimento. O objeto InkCollector também notifica o aplicativo quando um cursor entra no intervalo de qualquer um dos dispositivos tablet pc que estão sendo usados.

Para que o objeto InkCollector defina com precisão o cursor do mouse dentro de uma janela habilitada para tinta, essa janela deve ser capaz de receber a mensagem WM_SETCURSOR . Isso é bem-sucedido para todas as janelas regulares, mas, para um controle dentro de uma caixa de diálogo, o pai da caixa de diálogo do controle filtra essa mensagem. Para que o controle receba a mensagem, defina o estilo SS_NOTIFY .

Objeto InkOverlay

O objeto InkCollector , discutido anteriormente, é útil para que os aplicativos forneçam seu próprio modelo para selecionar, apagar e outra interação do usuário. O objeto InkOverlay é um superconjunto do objeto InkCollector que fornece suporte à edição. Isso é útil para que os aplicativos integrem o desenho à tinta e a edição em sua própria tela de documento usando um conjunto de modelos de seleção de tinta padrão fornecidos pelo objeto.

Tanto o objeto InkCollector quanto o objeto InkOverlay (bem como o controle InkPicture ) usam construções comuns, como o objeto Ink e a coleção DrawingAttributes , para que a maneira básica de alterar a cor da tinta seja a mesma em todos os lugares. Isso permite que você reutilize o código e tenha acesso programático comum, o que pode ser particularmente importante se você oferecer suporte a scripts em seu aplicativo.

InkOverlay é um objeto COM que é útil para cenários de anotação em que os usuários não estão preocupados em executar o reconhecimento na tinta, mas, em vez disso, estão interessados no tamanho, forma, cor e posição da tinta. É adequado para fazer anotações e rabiscos básicos. A interface do usuário padrão é um retângulo transparente com tinta opaca.

InkOverlay estende a classe InkCollector de três maneiras:

  • Ele gera eventos para alterações no atributo begin-stroke, end-stroke e ink.
  • Ele permite que os usuários selecionem, apaguem e redimensionem a tinta.
  • Ele dá suporte aos comandos Recortar, Copiar e Colar.

Um cenário típico no qual InkOverlay é útil está na marcação de um slide ou imagem de apresentação. O objeto InkOverlay permite uma implementação fácil dos recursos de tinta e layout que esse cenário requer.

Para trabalhar com InkOverlay, você:

  1. Instancie um objeto InkOverlay .
  2. Anexe o hWnd (identificador, no código gerenciado) de uma janela à propriedade hWnd do objeto InkOverlay (propriedade Handle, em código gerenciado).
  3. Defina a propriedade Enabled do objeto InkOverlay como TRUE.

O objeto InkOverlay inclui suporte básico à impressão, mas você deve implementar a visualização de impressão ou outros recursos avançados de impressão.

InkOverlay persiste a tinta no ISF (formato serializado à tinta).

Observação

Se o EditingMode do objeto InkOverlay estiver definido como Excluir ou Selecionar, outros eventos (como InkAdded, InkDeleted e Stroke) serão disparados. Esses eventos serão úteis se você quiser implementar seus próprios modos de exclusão ou seleção.

 

Selecionando Tinta

O objeto InkOverlay permite que os usuários usem uma ferramenta de laço para selecionar objetos de tinta contidos em uma região rastreada. Os usuários também podem selecionar tinta tocando em qualquer objeto Ink .

Use a propriedade Selection para retornar uma coleção Strokes que você pode usar para manipular a seleção de um usuário.

Quando um objeto Ink ou um conjunto de objetos Ink é selecionado, as alças de dimensionamento aparecem nos quatro cantos da caixa delimitadora da tinta e em todos os pontos médios entre cantos adjacentes. Se o usuário arrastar para qualquer lugar dentro da região selecionada, a tinta se tornará móvel dentro do controle.

Comportamento padrão

O objeto InkOverlay é definido para coletar tinta por padrão. A tinta tem 53 unidades de espaço à tinta de largura (em que 1 unidade de espaço à tinta = 1 HIMETRIC). A tinta será preta se o usuário não estiver em execução no modo de alto contraste. Caso contrário, a tinta será definida como o valor COLOR_WINDOWTEXT (WindowText no código gerenciado). FitToCurve é FALSE.

Objetos Cursor e Button

Um cursor corresponde à ponta da caneta usada no Tablet PC. Por exemplo, um lápis tem duas extremidades. Normalmente, uma extremidade é usada para gravação e a outra é usada para apagar. Essas duas extremidades correspondem a dois cursores. A classe Cursor não é confundida com System.Windows.Forms.Cursor.

No Tablet PC, um cursor geralmente é definido para ser usado para gravação ou apagamento. Um cursor poderá alterar potencialmente as funções se o aplicativo habilitar essa funcionalidade. Alguns dispositivos tablet pc permitem várias canetas. Cada cursor tem uma ID de cursor associada exclusiva no sistema. Um cursor pode ter zero ou mais botões associados. Esses botões são fornecidos ao aplicativo como objetos CursorButton. O aplicativo pode fornecer um objeto DrawingAttributes específico para qualquer cursor fornecido.

Objeto Drawing Attributes

Um objeto DrawingAttributes descreve como qualquer conjunto conhecido de tinta deve ser desenhado. Um objeto DrawingAttributes inclui propriedades básicas , como Color, Width e PenTip. Ele também pode abranger parâmetros avançados, como transparência variável e suavização de Bezier, que podem fornecer efeitos interessantes ou melhorar a legibilidade da tinta.

Objeto PenInputPanel

Observação

A classe PenInputPanel foi preterida. A classe PenInputPanel foi substituída pela classe TextInputPanel .

 

O objeto PenInputPanel permite que você adicione facilmente a entrada de caneta in-loco aos seus aplicativos. O PenInputPanel está disponível como um objeto anexável que permite adicionar a funcionalidade do Painel de Entrada do Tablet PC aos controles existentes. A interface do usuário é exigida em grande parte pelo idioma de entrada atual. Você tem a opção de escolher o método de entrada padrão para o PenInputPanel, manuscrito ou teclado. O usuário final pode alternar entre métodos de entrada usando botões na interface do usuário.

Classe InkCollector (C++)

Classe InkOverlay (C++)

Microsoft.Ink Namespace