Beispiel für gescanntes Papierformular
In diesem # C-Beispiel wurde ein Papierformular als PNG-Datei (Portable Network Graphics) gescannt und zur Laufzeit als Hintergrundbild für ein InkPicture-Steuerelement angegeben. Im Beispiel wird ein Meldungsfeld verwendet, um Ergebnisse der Handschrifterkennung anzuzeigen.
Das Beispiel enthält eine Extensible Markup Language -Datei (XML), Formdata.xml. Die XML-Datei enthält den Namen der PNG-Datei. Sie enthält auch FieldInfo Elemente, die rechteckige Bereiche im Formular definieren, in die ein Benutzer Ink eingeben kann. Die Informationen im FieldInfo -Element werden im folgenden Beispiel gezeigt:
<FieldInfo>
<Name>first name</Name>
<Left>88</Left>
<Top>65</Top>
<Right>332</Right>
<Bottom>94</Bottom>
</FieldInfo>
Die Elemente Left, Top, Right und Bottom sind Definitionen von Pixelkoordinaten für jedes Feld.
Im Beispiel wird ein neues DataSet mit den in Formdata.xml enthaltenen Daten initialisiert:
formData = new DataSet("FormData");
formData.ReadXml("formdata.xml");
Das in Formdata.xml angegebene Formularbild wird als Hintergrund des InkPicture-Steuerelements geladen:
inkPicture1.BackgroundImage =
System.Drawing.Image.FromFile(
(string) formData.Tables["FormData"].Rows[0]["Image"]);
Die Freihandsammlung wird dann für das InkPicture-Steuerelement aktiviert:
inkPicture1.InkEnabled = true;
Menüereignishandler
Die Anwendung enthält Click-Ereignishandler für alle Menüs, die oben im Formular angezeigt werden.
Menüelement "Erkennen"
Der Ereignishandler zum Erkennen von Klicks deaktiviert die Freihandsammlung für das Steuerelement und sucht nach einer Handschrifterkennung. Wenn keine Erkennung installiert ist, wird ein Dialogfeld angezeigt. Ein Benutzer muss dann auf die Menüoption "Ink" oder "Pen" klicken, um das Steuerelement für die Inkeingabe erneut zu aktivieren.
Wenn eine Erkennung installiert ist, ruft die Recognize Funktion die XML-Daten ab, die Pixelkoordinaten für jedes Formularfeld angeben. Die Koordinaten werden in Freihandraumkoordinaten konvertiert, und für jedes Formularfeld wird ein Rechteck definiert. Nachdem Rechtecke definiert wurden, sucht die Funktion die Striche, die sich überschneiden und innerhalb jedes Rechtecks liegen. Schließlich führt sie die Erkennung für die Ink aus und zeigt die Ergebnisse in einem Meldungsfeld an.
Menüelement "Ink"
Der Klickereignishandler des Menüs "Ink" aktiviert das InkPicture-Steuerelement.
Menüelement "Stift"
Der Pen-Menü-Click-Ereignishandler führt die folgenden Aufgaben aus:
- Deaktiviert die Ink-Sammlung für das InkPicture-Steuerelement (das vor dem Ändern der EditingMode-Eigenschaft erforderlich ist).
- Legt die EditingMode-Eigenschaft zum Erfassen von Ink fest.
- Aktiviert die Ink-Sammlung für das InkPicture-Steuerelement erneut und schaltet die Menüs Stift, Auswählen und Radierer um, um den aktiven Modus anzugeben.
Menüelement bearbeiten
Der Menü-Click-Ereignishandler bearbeiten ähnelt dem Pen-Menüereignishandler. Er führt die folgenden Aufgaben aus:
- Deaktiviert die Ink-Sammlung.
- Legt die EditingMode-Eigenschaft auf Auswählen fest, wodurch der Benutzer die Auswahl von Ink-Dateien ausführen kann.
- Aktiviert die Ink-Sammlung erneut und schaltet die Menüs Stift, Bearbeiten und Radierer um, um den aktiven Modus anzugeben.
Menüelement "Radierer"
Der Ereignishandler des Radierermenüs legt den Bearbeitungsmodus des InkPicture-Steuerelements auf Löschen fest, wodurch ein Benutzer Ink löschen kann. Außerdem werden die Menüelemente Stift, Bearbeiten und Radierer umgeschaltet.
Menüelement löschen
Der Clear-Menü-Click-Ereignishandler löscht die aktuelle Strokes-Auflistung für das InkPicture-Steuerelement, wodurch alle Freihanddaten im Formular gelöscht werden.
Schließen des Formulars
Im Windows vom Formular-Designer generierten Code wird das InkPicture-Steuerelement der Komponentenliste des Formulars hinzugefügt, wenn das Formular initialisiert wird. Wenn das Formular geschlossen wird, wird das InkPicture-Steuerelement sowie die anderen Komponenten des Formulars durch die Dispose-Methode des Formulars verworfen.