如何使用 WPF 扫描文档
在本文中,我将与您分享如何在 WPF 应用程序中使用 Dynamic .NET TWAIN 来处理您的文档。
引言
Windows Presentation Foundation (WPF) 是随 .NET Framework 3.0 引入的,是一个用于为 Windows 平台创建图形用户界面的 API。尽管 WinForm 是一项成熟且经过验证的技术,但越来越多的开发人员转向 WPF,因为它能更好地处理图形和动画。与传统的窗体应用程序相比,WPF 允许您以最有效和最灵活的方式自定义控件。
Dynamsoft 的 Dynamic .NET TWAIN 是一个 .NET 组件,可以嵌入到 WPF 应用程序中。您可以在文档处理的不同阶段使用该组件,从图像扫描、编辑到最终图像存储。在本文中,我将提供集成步骤以及可以实现的图像处理功能/特性。
示例代码
在这里,我假设您已经在您的开发机器上安装了 Dynamic .NET TWAIN。
- 打开 Visual Studio 并创建一个 WPF 应用程序。
- 转到解决方案资源管理器 -> 引用,添加“Dynamic .NET TWAIN”以及您在资源管理器中找不到的任何其他 .NET 引用,如下面的代码片段所示
- 初始化 Dynamic .NET TWAIN 组件。
- 创建一个网格来保存组件。像这样更改 .xaml 文件
<Window x:Class="WpfDemo.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Acquire Image" Height="600" Width="500" Loaded="Window_Loaded"> <Grid Name="grid1" Height="400" Width="300"> <WindowsFormsHost ></WindowsFormsHost> </Grid> </Window>
- 在.xaml.cs 文件中,添加 Dynamic .NET TWAIN 的命名空间,然后在
Window_Loaded
事件中插入以下代码行来初始化组件。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Dynamsoft.DotNet.TWAIN; namespace WpfAppDNT { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } DynamicDotNetTwain objDynamicDotNetTwain = null; private void Window_Loaded(object sender, RoutedEventArgs e) { System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost(); objDynamicDotNetTwain = new DynamicDotNetTwain(); objDynamicDotNetTwain.Width = 200; objDynamicDotNetTwain.Height = 300; host.Child = objDynamicDotNetTwain; this.grid1.Children.Add(host); } } }
- 创建一个网格来保存组件。像这样更改 .xaml 文件
- 转到 .xaml 文件以添加所需的按钮。在此示例中,您可以看到已添加了两个按钮:
btnSelect
和btnAcquire
。可以根据您的要求添加更多功能。<Window x:Class="WpfAppDNT.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="600" Width="500" Loaded="Window_Loaded"> <Grid Name="grid1" Height="400" Width="300"> <WindowsFormsHost></WindowsFormsHost> <Button Height="23" HorizontalAlignment="Left" Margin="0,0,0,-37" Name="btnSelect" VerticalAlignment="Bottom" Width="88" Click="btnSelect_Click">Select Source </Button> <Button Height="23" Margin="103,0,148,-37" Name="btnAcquire" VerticalAlignment="Bottom" Click="btnAcquire_Click">Acquire</Button> </Grid> </Window>
- 图像扫描。添加按钮后,您可以插入源代码以实现计划的功能。
btnSelect
将显示您设备的所有可用源,包括连接的/远程扫描仪、网络摄像头等。最新版本的 Dynamic .NET TWAIN (v4.1) 与所有 TWAIN、WIA 和 UVC 兼容设备兼容。private void btnSelect_Click(object sender, RoutedEventArgs e) { objDynamicDotNetTwain.SelectSource(); }
使用 btnAcquire
,您可以从选定的设备捕获图像和文档。
private void btnAcquire_Click(object sender, RoutedEventArgs e)
{
objDynamicDotNetTwain.IfDisableSourceAfterAcquire = true;
objDynamicDotNetTwain.AcquireImage();
}
默认情况下,大多数设备(包括屏幕截图中显示的TWAIN2 FreeImage Software Scanner 2.1)在点击“获取”时都会提示您源的用户界面。通过用户界面,用户可以调整图像的属性,例如单/双面扫描、颜色模式、分辨率、页面大小、亮度、对比度等。这为您的客户在文档扫描过程中提供了最大的灵活性。但是,一些企业和组织,例如计划扫描用户 ID 的银行和政府,可能希望标准化页面大小、分辨率和/或其他图像属性。Dynamic .NET TWAIN 也支持这一点。控件提供了丰富的属性集,使您可以硬编码这些属性。这是一个例子
Dynamic .NET TWAIN 支持的其他功能
除了图像扫描,借助 Dynamic .NET TWAIN,您可以向 WPF 应用程序添加更多功能。
- 编辑扫描的图像。旋转、裁剪、翻转和/或镜像图像以更好地满足您的需求。
- 放大/缩小图像。
- 将扫描的图像上传到本地文件夹、FTP 站点、Web 服务器或数据库。
示例代码下载
如果您对 WPF 示例感兴趣,可以在以下位置下载源代码
如果您想了解更多关于 Dynamic .NET TWAIN 的信息,您可以获得 30 天的免费试用。
Dynamic .NET TWAIN 30 天免费试用下载
Dynamic .NET TWAIN 的其他演示
如果您有任何问题,可以联系我们的支持团队,邮箱地址是 nettwain@dynamsoft.com。