扫描的纸张表单示例
在此 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中包含的数据初始化新的 数据集 :
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;
菜单事件处理程序
该应用程序包括窗体顶部显示的所有菜单的单击事件处理程序。
识别菜单项
“识别”菜单单击事件处理程序禁用控件的墨迹收集并检查手写识别器。 如果未安装任何识别器,则显示一个对话框。 然后,用户必须单击“墨迹”或“笔”菜单选项,以重新启用控件进行墨迹输入。
如果安装了识别器,函数将 Recognize
检索 XML 数据,该数据指定每个窗体字段的像素坐标。 坐标将转换为墨迹空间坐标,并为每个窗体字段定义一个矩形。 定义矩形后,函数将查找每个矩形内相交和位于的笔划。 最后,它会对墨迹执行识别,并在消息框中显示结果。
墨迹菜单项
墨迹菜单单击事件处理程序启用 InkPicture 控件。
触控笔菜单项
笔菜单单击事件处理程序执行以下任务:
- 在更改 EditingMode 属性) 之前,禁用 InkPicture 控件 (的墨迹集合。
- 设置 EditingMode 属性以收集墨迹。
- 重新为 InkPicture 控件启用墨迹集合,并切换“笔”、“选择”和“橡皮擦”菜单以指示活动模式。
编辑菜单项
“编辑”菜单单击事件处理程序类似于“笔”菜单事件处理程序。 该代码会执行以下任务:
- 禁用墨迹收集。
- 将 EditingMode 属性设置为 Select,使用户能够执行墨迹选择。
- 重新启用墨迹收集并切换“笔”、“编辑”和“橡皮擦”菜单以指示活动模式。
橡皮擦菜单项
橡皮擦菜单单击事件处理程序将 InkPicture 控件 EditingMode 设置为 Delete,这使用户能够擦除墨迹。 它还切换“笔”、“编辑”和“橡皮擦”菜单项。
清除菜单项
“清除”菜单单击事件处理程序会删除 InkPicture 控件的当前 Strokes 集合,从而擦除窗体上的所有墨迹。
关闭窗体
在 Windows 窗体Designer生成的代码中,初始化窗体时,InkPicture 控件将添加到窗体的组件列表。 当窗体关闭时,InkPicture 控件以及窗体的其他组件通过窗体的 Dispose 方法释放 。
相关主题