65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用 WPF 扫描文档

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2012年9月7日

CPOL

3分钟阅读

viewsIcon

48942

downloadIcon

2079

在本文中,我将与您分享如何在 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

  1. 打开 Visual Studio 并创建一个 WPF 应用程序。
  2. 转到解决方案资源管理器 -> 引用,添加“Dynamic .NET TWAIN”以及您在资源管理器中找不到的任何其他 .NET 引用,如下面的代码片段所示

  3. 初始化 Dynamic .NET TWAIN 组件。
    1. 创建一个网格来保存组件。像这样更改 .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>
    2. .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);
            }
    }
    }
  4. 转到 .xaml 文件以添加所需的按钮。在此示例中,您可以看到已添加了两个按钮:btnSelectbtnAcquire。可以根据您的要求添加更多功能。
    <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>
  5. 图像扫描。添加按钮后,您可以插入源代码以实现计划的功能。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

© . All rights reserved.