Partager via


Exemple de formulaire papier numérisé

Dans cet exemple C#, un formulaire papier a été analysé en tant que fichier PNG (Portable Network Graphics) et spécifié comme image d’arrière-plan au moment de l’exécution pour un contrôle InkPicture . L’exemple utilise une zone de message pour afficher les résultats de la reconnaissance de l’écriture manuscrite.

L’exemple inclut un fichier XML (Extensible Markup Language), Formdata.xml. Le fichier XML contient le nom du fichier PNG. Il contient également des FieldInfo éléments qui définissent des régions rectangulaires sur le formulaire où un utilisateur peut entrer de l’encre. Les informations contenues dans l’élément FieldInfo sont illustrées dans l’exemple suivant :

    <FieldInfo>
        <Name>first name</Name>
        <Left>88</Left>
        <Top>65</Top>
        <Right>332</Right>
        <Bottom>94</Bottom>
    </FieldInfo>

Les éléments Left, Top, Right et Bottom sont des définitions des coordonnées de pixel pour chaque champ.

L’exemple initialise un nouveau DataSet avec les données contenues dans Formdata.xml :

    formData = new DataSet("FormData");
    formData.ReadXml("formdata.xml"); 

L’image de formulaire spécifiée dans Formdata.xml est chargée en tant qu’arrière-plan du contrôle InkPicture :

    inkPicture1.BackgroundImage = 
        System.Drawing.Image.FromFile(
        (string) formData.Tables["FormData"].Rows[0]["Image"]);

La collection d’encre est ensuite activée pour le contrôle InkPicture :

    inkPicture1.InkEnabled = true;

L’application inclut des gestionnaires d’événements de clic pour tous les menus affichés en haut du formulaire.

Reconnaître l’élément de menu

Le gestionnaire d’événements click du menu Reconnaître désactive la collecte d’encre pour le contrôle et recherche un outil de reconnaissance d’écriture manuscrite. Si aucun module de reconnaissance n’est installé, une boîte de dialogue s’affiche. Un utilisateur doit ensuite cliquer sur l’option de menu Encre ou stylet pour réactiver le contrôle d’entrée manuscrite.

Si un module de reconnaissance est installé, la Recognize fonction récupère les données XML qui spécifient les coordonnées de pixels pour chaque champ de formulaire. Les coordonnées sont converties en coordonnées d’espace d’entrée manuscrite et un rectangle est défini pour chaque champ de formulaire. Une fois les rectangles définis, la fonction recherche les traits qui se croisent et se trouvent dans chaque rectangle. Enfin, il effectue la reconnaissance sur l’encre et affiche les résultats dans une zone de message.

Élément de menu Ink

Le gestionnaire d’événements click du menu Ink active le contrôle InkPicture .

Élément de menu stylet

Le gestionnaire d’événements click du menu Stylet effectue les tâches suivantes :

  • Désactive la collection d’encre pour le contrôle InkPicture (ce qui est nécessaire avant de modifier la propriété EditingMode ).
  • Définit la propriété EditingMode pour collecter l’encre.
  • Réactive la collection d’encre pour le contrôle InkPicture et bascule les menus Stylet, Sélection et Gomme pour indiquer le mode actif.

Modifier l’élément de menu

Le gestionnaire d’événements de clic du menu Modifier est similaire au gestionnaire d’événements de menu Stylet. Il effectue les tâches suivantes :

  • Désactive la collection d’encre.
  • Définit la propriété EditingMode sur Select, ce qui permet à l’utilisateur d’effectuer une sélection manuscrite.
  • Réactive la collecte d’encre et bascule les menus Stylet, Modifier et Effacer pour indiquer le mode actif.

Élément de menu Gomme

Le gestionnaire d’événements click du menu Effacer définit le contrôle InkPictureEditingMode sur Supprimer, ce qui permet à un utilisateur d’effacer l’entrée manuscrite. Il bascule également les éléments de menu Stylet, Modifier et Gomme.

Effacer l’élément de menu

Le gestionnaire d’événements Effacer le clic du menu supprime la collection Strokes actuelle pour le contrôle InkPicture , effançant ainsi toute l’entrée manuscrite du formulaire.

Fermeture du formulaire

Dans le Windows Form Designer code généré, le contrôle InkPicture est ajouté à la liste des composants du formulaire lors de l’initialisation du formulaire. Lorsque le formulaire se ferme, le contrôle InkPicture est supprimé, ainsi que les autres composants du formulaire, par la méthode Dispose du formulaire.

Contrôle InkEdit

Contrôle InkPicture