Udostępnij przez


Przykład zeskanowanego formularza papieru

W tym przykładzie w języku C#, formularz papierowy został zeskanowany jako plik Portable Network Graphics (PNG) i ustawiony jako obraz tła kontrolki InkPicture podczas wykonywania programu. Przykład używa pola komunikatu do wyświetlania wyników rozpoznawania pisma ręcznego.

Przykład zawiera plik Extensible Markup Language (XML), Formdata.xml. Plik XML zawiera nazwę pliku PNG. Zawiera również FieldInfo elementy definiujące prostokątne regiony w formularzu, w których użytkownik może wprowadzić pismo odręczne. Informacje w elemecie FieldInfo są wyświetlane w poniższym przykładzie:

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

Elementy Lewy, Górny, Prawy i Dolny to definicje współrzędnych pikseli dla każdego pola.

Przykład kodu inicjuje nowy zestaw danych z danymi zawartymi w Formdata.xml:

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

Obraz formularza określony w Formdata.xml jest ładowany jako tło kontrolki InkPicture :

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

Kolekcja pisma odręcznego jest następnie włączona dla kontrolki InkPicture :

    inkPicture1.InkEnabled = true;

Aplikacja zawiera programy obsługi zdarzeń kliknięcia dla wszystkich menu wyświetlanych u góry formularza.

Rozpoznaj element menu

Obsługa zdarzenia kliknięcia w menu Rozpoznaj wyłącza zbieranie pisma odręcznego przez kontrolkę i sprawdza obecność rozpoznawarki pisma ręcznego. Jeśli program rozpoznawania nie jest zainstalowany, zostanie wyświetlone okno dialogowe. Użytkownik musi następnie kliknąć opcję menu Atrament lub Pióro, aby ponownie włączyć kontrolkę dla danych wejściowych pisma oddyskowego.

Jeśli program rozpoznawania jest zainstalowany, Recognize funkcja pobiera dane XML, które określają współrzędne pikseli dla każdego pola formularza. Współrzędne są konwertowane na współrzędne przestrzeni tuszu, a prostokąt jest definiowany dla każdego pola formularza. Po zdefiniowaniu prostokątów funkcja znajduje pociągnięcia, które przecinają się i leżą w każdym prostokątze. Na koniec wykonuje rozpoznawanie tuszu i wyświetla wyniki w oknie komunikatu.

Element menu Pisma odk

Handler kliknięcia w menu Ink włącza kontrolkę InkPicture.

Element menu Pióro

Program obsługi zdarzeń kliknięcia w menu Pióro wykonuje następujące zadania:

  • Wyłącza zbieranie tuszu dla kontrolki InkPicture (co jest niezbędne przed zmianą właściwości EditingMode).
  • Ustawia właściwość EditingMode w celu zbierania atramentu.
  • Ponownie włącza zbieranie pisma odręcznego dla kontrolki InkPicture i przełącza menu Pióro, Wybierz i Gumka, aby wskazać tryb aktywny.

Edytuj element menu

Procedura obsługi zdarzeń kliknięcia w menu Edycja jest podobna do procedury w menu Pióro. Wykonuje następujące zadania:

  • Wyłącza zbieranie atramentu.
  • Ustawia właściwość EditingMode na Select, co umożliwia użytkownikowi wykonywanie zaznaczenia pisma odręcznego.
  • Ponownie włącza zbieranie pisma odręcznego, a także przełącza menu Pióro, Edytowanie i Gumka, aby wskazać aktywny tryb.

Element menu Gumka

Program obsługi zdarzeń kliknięcia w menu Gumka ustawia kontrolkę InkPicture w tryb EditingMode na Delete, co pozwala użytkownikowi na wymazywanie pisma odręcznego. Również przełącza elementy menu: Pióro, Edytuj i Gumka.

Usuń pozycję menu

Obsługa zdarzenia kliknięcia w menu Wyczyść usuwa bieżącą kolekcję Strokes kontrolki InkPicture, usuwając w ten sposób całe pismo odręczne z formularza.

Zamykanie formularza

W kodzie wygenerowany przez program Windows Form Designer kontrolka InkPicture jest dodawana do listy składników formularza po zainicjowaniu formularza. Gdy formularz zostanie zamknięty, kontrolka InkPicture zostanie usunięta, a także inne składniki formularza za pomocą metody Dispose formularza.

kontrolka InkEdit

Kontrolka InkPicture