掃描的紙張表單範例
在此 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 控制項會啟用 Ink 集合:
inkPicture1.InkEnabled = true;
功能表事件處理常式
應用程式包含表單頂端所顯示之所有功能表的 Click 事件處理常式。
辨識功能表項目
[辨識] 功能表按一下事件處理常式會停用控制項的筆跡集合,並檢查手寫辨識器。 如果未安裝辨識器,則會顯示對話方塊。 接著,使用者必須按一下 [筆跡] 或 [手寫筆] 功能表選項,以重新啟用筆跡輸入的控制項。
如果已安裝辨識器,函 Recognize
式會擷取 XML 資料,以指定每個表單欄位的圖元座標。 座標會轉換成筆跡空間座標,而且會針對每個表單欄位定義矩形。 定義矩形之後,函式會尋找彼此交集並位於每個矩形內的筆劃。 最後,它會對筆跡執行辨識,並在訊息方塊中顯示結果。
筆跡功能表項目
Ink 功能表按一下事件處理常式會啟用 InkPicture 控制項。
手寫筆功能表項目
手寫筆功能表按一下事件處理常式會執行下列工作:
- 停用 InkPicture 控制項的筆跡集合 (,這在變更 EditingMode 屬性) 之前是必要的。
- 設定要收集筆跡 的 EditingMode 屬性。
- 重新啟用 InkPicture 控制項的筆跡集合,並切換手寫筆、選取和橡皮擦功能表以指出使用中模式。
編輯功能表項目
[編輯] 功能表按一下事件處理常式類似于 Pen 功能表事件處理常式。 其會執行下列工作:
- 停用筆跡集合。
- 將 EditingMode 屬性設定為 Select,讓使用者能夠執行筆跡選取。
- 重新啟用筆跡收集,並切換手寫筆、編輯和橡皮擦功能表,以指出作用中模式。
橡皮擦功能表項目
Eraser 功能表按一下事件處理常式會將 InkPicture 控制項 EditingMode 設定為 Delete,讓使用者清除筆跡。 它也會切換手寫筆、編輯和橡皮擦功能表項目。
清除功能表項目
[清除] 功能表按一下事件處理常式會刪除InkPicture控制項的目前Strokes集合,藉此清除表單上的所有筆跡。
關閉表單
在 Windows Form Designer產生的程式碼中,InkPicture控制項會在初始化表單時新增至表單的元件清單。 表單關閉時,表單的 Dispose 方法會處置 InkPicture 控制項,以及表單的其他元件。
相關主題