この 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 コントロール EditingMode を Delete に設定します。これにより、ユーザーはインクを消去できます。 また、ペン、編集、消しゴムのメニュー項目も切り替えます。
メニュー項目のクリア
Clear メニュークリック イベント ハンドラーは、InkPicture コントロールの現在の Strokes コレクションを削除し、フォーム上のすべてのインクを消去します。
フォームを閉じる
Windows フォーム デザイナーで生成されたコードでは、フォームの初期化時に InkPicture コントロールがフォームのコンポーネント リストに追加されます。 フォームが閉じると、フォームの Dispose メソッドによって、InkPicture コントロールとフォームの他のコンポーネントが 破棄 されます。
関連トピック
-
インクピクチャコントロール