次の方法で共有


スキャンされた用紙フォームのサンプル

この C# サンプルでは、紙のフォームがポータブル ネットワーク グラフィックス (PNG) ファイルとしてスキャンされ、 InkPicture コントロールの実行時に背景画像として指定されています。 このサンプルでは、メッセージ ボックスを使用して手書きの認識結果を表示します。

このサンプルには、拡張マークアップ言語 (XML) ファイル Formdata.xml含まれています。 XML ファイルには、PNG ファイルの名前が含まれています。 また、ユーザーがインクを入力できるフォーム上の四角形領域を定義する FieldInfo 要素も含まれています。 FieldInfo要素の情報を次の例に示します。

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

Left、Top、Right、Bottom の各要素は、各フィールドのピクセル座標の定義です。

このサンプルでは、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 データを取得します。 座標はインク空間座標に変換され、フォーム フィールドごとに四角形が定義されます。 四角形が定義された後、関数は各四角形と交差してその内側にあるストロークを検索します。 最後に、インクに対して認識を実行し、結果をメッセージ ボックスに表示します。

インク メニュー項目

Ink メニューのクリック イベント ハンドラーにより、 InkPicture コントロールが有効になります。

ペンメニュー アイテム

[ペン] メニューのクリック イベント ハンドラーは、次のタスクを実行します。

  • InkPicture コントロールのインク コレクションを無効にします (EditingMode プロパティを変更する前に必要)。
  • EditingMode プロパティをインク収集モードに設定します。
  • InkPicture コントロールのインクコレクションを再度有効にし、ペン、選択、消しゴムのメニューを切り替えてアクティブモードを示します。

メニュー項目の編集

[編集] メニューのクリック イベント ハンドラーは、Pen メニュー イベント ハンドラーに似ています。 次のタスクを実行します。

  • インクコレクションを無効にします。
  • EditingMode プロパティをSelect に設定します。これにより、ユーザーはインクの選択を実行できます。
  • インクの収集を再度有効にし、[ペン]、[編集]、[消しゴム] メニューを切り替えてアクティブ モードを示します。

消しゴム メニュー項目

消しゴム メニューのクリック イベント ハンドラーは、 InkPicture コントロール EditingModeDelete に設定します。これにより、ユーザーはインクを消去できます。 また、ペン、編集、消しゴムのメニュー項目も切り替えます。

メニュー項目のクリア

Clear メニュークリック イベント ハンドラーは、InkPicture コントロールの現在の Strokes コレクションを削除し、フォーム上のすべてのインクを消去します。

フォームを閉じる

Windows フォーム デザイナーで生成されたコードでは、フォームの初期化時に InkPicture コントロールがフォームのコンポーネント リストに追加されます。 フォームが閉じると、フォームの Dispose メソッドによって、InkPicture コントロールとフォームの他のコンポーネントが 破棄 されます。

InkEdit コントロール

インクピクチャコントロール