다음을 통해 공유


스캔한 용지 양식 샘플

이 C# 샘플에서 용지 양식은 PNG(이식 가능한 네트워크 그래픽) 파일로 스캔되었으며 런타임에 InkPicture 컨트롤의 배경 이미지로 지정되었습니다. 샘플에서는 메시지 상자를 사용하여 필기 인식 결과를 표시합니다.

샘플에는 XML(Extensible Markup Language) 파일 Formdata.xml포함됩니다. XML 파일에는 PNG 파일의 이름이 포함됩니다. 또한 사용자가 잉크를 입력할 수 있는 양식에서 사각형 영역을 정의하는 FieldInfo 요소가 포함되어 있습니다. FieldInfo 요소의 정보는 다음 예제에 나와 있습니다.

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

왼쪽, 위쪽, 오른쪽 및 아래쪽 요소는 각 필드에 대한 픽셀 좌표의 정의입니다.

이 샘플은 Formdata.xml에 포함된 데이터를 사용하여 새 DataSet을 초기화합니다.

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

Formdata.xml 지정된 양식 이미지는 InkPicture 컨트롤의 배경으로 로드됩니다.

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

그런 다음 InkPicture 컨트롤에 잉크 컬렉션을 사용하도록 설정합니다.

    inkPicture1.InkEnabled = true;

애플리케이션에는 폼의 맨 위에 표시되는 모든 메뉴에 대한 클릭 이벤트 처리기가 포함됩니다.

메뉴 항목 인식

Recognize 메뉴 클릭 이벤트 처리기는 컨트롤에 대한 잉크 컬렉션을 사용하지 않도록 설정하고 필기 인식기를 확인합니다. 인식기가 설치되어 있지 않으면 대화 상자가 표시됩니다. 그런 다음 잉크 또는 펜 메뉴 옵션을 클릭하여 잉크 입력에 대한 컨트롤을 다시 사용하도록 설정해야 합니다.

인식기가 설치된 경우 Recognize 함수는 각 양식 필드의 픽셀 좌표를 지정하는 XML 데이터를 검색합니다. 좌표는 잉크 공간 좌표로 변환되고 각 양식 필드에 대해 사각형이 정의됩니다. 사각형이 정의되면 함수는 각 사각형 내에서 교차하고 있는 스트로크를 찾습니다. 마지막으로 잉크에서 인식을 수행하고 메시지 상자에 결과를 표시합니다.

잉크 메뉴 항목

잉크 메뉴 클릭 이벤트 처리기는 InkPicture 컨트롤을 활성화합니다.

펜 메뉴 항목

펜 메뉴 클릭 이벤트 처리기는 다음 작업을 수행합니다.

  • InkPicture 컨트롤에 대한 잉크 컬렉션을 사용하지 않도록 설정합니다(EditingMode 속성을 변경하기 전에 필요).
  • 잉크를 수집할 EditingMode 속성을 설정합니다.
  • InkPicture 컨트롤에 잉크 컬렉션을 다시 사용하도록 설정하고 펜, 선택 및 지우개 메뉴를 전환하여 활성 모드를 나타냅니다.

편집 메뉴 항목

편집 메뉴 클릭 이벤트 처리기는 펜 메뉴 이벤트 처리기와 비슷합니다. 다음 작업을 수행합니다.

  • 잉크 컬렉션을 사용하지 않도록 설정합니다.
  • EditingMode 속성을 Select설정하여 사용자가 잉크 선택을 수행할 수 있도록 합니다.
  • 잉크 컬렉션을 다시 사용하도록 설정하고 펜, 편집 및 지우개 메뉴를 전환하여 활성 모드를 나타냅니다.

지우개 메뉴 항목

지우개 메뉴 클릭 이벤트 처리기는 InkPicture 컨트롤 EditingModeDelete설정하여 사용자가 잉크를 지울 수 있도록 합니다. 또한 펜, 편집 및 지우개 메뉴 항목을 전환합니다.

메뉴 항목 지우기

지우기 메뉴 클릭 이벤트 처리기는 InkPicture 컨트롤에 대한 현재 Strokes 컬렉션을 삭제하여, 양식에서 모든 잉크가 지워지게 합니다.

양식 닫기

Windows Form Designer에서 생성된 코드에서 양식이 초기화될 때 InkPicture 컨트롤이 양식의 구성 요소 목록에 추가됩니다. 폼이 닫히면 양식의 Dispose 메서드에 의해 InkPicture 컨트롤과 양식의 다른 구성 요소가 삭제됩니다.

InkEdit 컨트롤

InkPicture 컨트롤