共用方式為


掃描的紙張表單範例

在此 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 控制項,以及表單的其他元件。

InkEdit 控制項

InkPicture 控制項