Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste exemplo de C#, um formulário em papel foi digitalizado e salvo como um PNG (Portable Network Graphics) e especificado como a imagem de plano de fundo em tempo de execução para um controle InkPicture. O exemplo usa uma caixa de mensagem para exibir os resultados do reconhecimento de manuscrito.
O exemplo inclui um arquivo XML (Extensible Markup Language), Formdata.xml. O arquivo XML contém o nome do arquivo PNG. Ele também contém FieldInfo elementos que definem regiões retangulares no formulário em que um usuário pode inserir tinta. As informações no FieldInfo elemento são mostradas no exemplo a seguir:
<FieldInfo>
<Name>first name</Name>
<Left>88</Left>
<Top>65</Top>
<Right>332</Right>
<Bottom>94</Bottom>
</FieldInfo>
Os elementos Esquerdo, Superior, Direito e Inferior são definições de coordenadas de pixel para cada campo.
O exemplo inicializa um novo DataSet com os dados contidos em Formdata.xml:
formData = new DataSet("FormData");
formData.ReadXml("formdata.xml");
A imagem de formulário especificada em Formdata.xml é carregada como o plano de fundo do controle InkPicture :
inkPicture1.BackgroundImage =
System.Drawing.Image.FromFile(
(string) formData.Tables["FormData"].Rows[0]["Image"]);
A coleta de tinta é então habilitada para o controle InkPicture.
inkPicture1.InkEnabled = true;
Manipuladores de eventos de menu
O aplicativo inclui manipuladores de eventos de clique para todos os menus exibidos na parte superior do formulário.
Reconhecer Item de Menu
O manipulador de eventos do menu de reconhecimento desabilita a coleta de tinta para o controle e verifica se há um reconhecedor de escrita à mão. Se nenhum reconhecedor estiver instalado, uma caixa de diálogo será exibida. Em seguida, um usuário deve clicar na opção de menu Tinta ou Caneta para habilitar novamente o controle para entrada de tinta.
Se um reconhecedor estiver instalado, a Recognize função recuperará os dados XML que especificam coordenadas de pixel para cada campo de formulário. As coordenadas são convertidas em coordenadas de espaço à tinta e um retângulo é definido para cada campo de formulário. Depois que os retângulos são definidos, a função localiza os traços que se cruzam e ficam dentro de cada retângulo. Por fim, ele executa o reconhecimento na tinta e exibe os resultados em uma caixa de mensagem.
Item de Menu de Tinta
O manipulador de eventos de clique no menu Ink habilita o controle InkPicture .
Item do Menu da Caneta
O manipulador de eventos de clique no menu Caneta executa as seguintes tarefas:
- Desabilita a captura de tinta para o controle InkPicture (o que é necessário antes de alterar a propriedade EditingMode ).
- Define a propriedade EditingMode para coletar tinta.
- Reabilita a coleta de tinta para o controle InkPicture e alterna os menus Caneta, Seleção e Borracha para mostrar o modo ativo.
Editar Item de Menu
O manipulador do evento de clique no menu Editar é semelhante ao manipulador do evento do menu Caneta. Ele executa as seguintes tarefas:
- Desabilita a coleção de tintas.
- Define a propriedade EditingMode como Select, que permite que o usuário execute a seleção de tinta.
- Reabilita a coleta de tinta e alterna entre os menus Caneta, Edição e Borracha para indicar o modo ativo.
Item de menu borracha
O manipulador de eventos de clique no menu Borracha define o controle InkPictureEditingMode para Delete, o que permite ao usuário apagar a tinta. Ele também alterna os itens de menu Caneta, Edição e Borracha.
Limpar Item de Menu
O manipulador do evento de clique no menu Limpar exclui a coleção atual de Traços do controle InkPicture, apagando assim toda a tinta no formulário.
Fechando o formulário
No código gerado pelo Designer de Formulários do Windows, o controle InkPicture é adicionado à lista de componentes do formulário quando o formulário é inicializado. Quando o formulário é fechado, o controle InkPicture é descartado, bem como os outros componentes do formulário, pelo método Dispose do formulário.
Tópicos relacionados