配色: 字号:
LeadTools图像处理开发教程(6):从TWAIN源获取图像2
2023-07-16 | 阅:  转:  |  分享 
  
LeadTools 图像处理开发教程 (6):从 TWAIN 源获取图像



本博文主要包括:

?

?

TWAIN 知识简介

创建“从 TWAIN 源获取图像”应用程序的具体步骤



TWAIN 知识简介

从硬件到软件, TWAIN包含四层: 硬件、 源、 源管理器和软件。 硬件厂家的 TWAIN

支持通常体现为支持 TWAIN接口的驱动程序。 TWAIN的硬件层接口被称为源,

源管理器负责选择和管理来自不同硬件厂家的源。 在微软的 Windows 上, 源管

理器是以 DLL方式实现。 TWAIN 软件不直接调用硬件厂家的 TWAIN接口,而

是通过源管理器。



用户在 TWAIN 软件中选择获取图像之后, TWAIN 软件和硬件通过一系列交涉

来决定如何传输数据。软件描述它需要的图像,而硬件描述它能够提供的图像。

如果软硬件在图像格式上达成一致, 那么控制被传递到源。 源现在可以设置扫描

选项,以及开始扫描。



创建“从 TWAIN 源获取图像”应用程序的具体步骤

1. 打开 Visual Studio .NET。

2. 点击 文件 ->新建 ->项目… 。

3. 打开 新建项目 对话框后,在模板中选择“ Visual C#”或“ Visual

Basic”,随后选择“ Windows 窗体应用程序 ”。在 名称 栏中输入项目名称

“ Acquiring an Image”,并使用“ 浏览 ”按钮选择您工程的存储路径,点

击“ 确定 ”。

4. 在“ 解决方案资源管理器 ”中,右击“ 引用 ”,选择“ 添加引用 ”。 根据当

前工程的 Framework 版本和生成目标平台,选择添加相应的 LeadTools 控

件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选

择 Leadtools For .NET 文件夹”

\Bin\DotNet4\Win32” ,选择以下的 DLL

“:

?

?

?

?

Leadtools.dll

Leadtools.Twain.dll

Leadtools.Codecs.dll

Leadtools.WinForms.dll

点击“ 确定 ”按钮,将以上所有的 DLL 添加到应用程序中。



5. 将 Form1调整到设计视图,在工具箱( 视图 ->工具箱 )拖拽一个

RasterImageViewer实例至窗体。若您的工具箱没有

RasterImageViewer,点击 工具->选择工具箱项…。 点击浏览从

\Bin\DotNet4\Win32” 中选择

Leadtools.WinForms.DLL,点击打开并确定。



6. 切换至 Form1 的设计视图,从工具箱(视图 ->工具箱)里拖拽 3 个

RadioButton 控件的实例至窗体上,根据以下表格修改属性:

Text Name Checked

本机 radioNative False

存储器 radioMemory False

文件 radioFile False





7. 从工具箱(视图 ->工具箱)拖拽 4 个 Button 控件的实例至窗体上,根据以

下表格修改相关属性:



Text Name

获取 buttonAcquire

选择源 buttonSelectSource

保存模板文件 buttonSaveTemplateFile

加载模板文件 buttonLoadTemplateFile



8. 切换至 Form1 的代码视图,在文件开始添加以下代码:

1: [C#]

2: using Leadtools;

3: using Leadtools.Twain;

4: using Leadtools.Codecs;

5: using Leadtools.WinForms;



9. 声明以下私有变量:

1: [C#]

2: private TwainSession twnSession;



10. 为 Form1 的 Load 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void Form1_Load(object sender, System.EventArgs e)

4: {

5: try

6: {

7: twnSession =new TwainSession();

8: twnSession.Startup(this, "manufacturer", "productFam

ily", "version", "application", TwainStartupFlags.None);

9: }

10: catch (Exception ex)

11: {

12: MessageBox.Show(this, ex.Message);

13: }

14: }



11. 为 Form1 的 Closing 事件添加事件句柄,代码如下:

1: [C#]

2: private void Form1_FormClosing(object sender, FormClosingE

ventArgs e)

3: {

4: try

5: {

6: twnSession.Shutdown();

7: }

8: catch (Exception ex)

9: {

10: MessageBox.Show(this, ex.Message);

11: }

12: }



12. 为 twnSession AcquirePage 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void twnSession_AcquirePage(object sender, TwainAc

quirePageEventArgs e)

4: {

5: rasterImageViewer1.Image = e.Image;

6: }

13. 为 buttonAcquire Click 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void buttonAcquire_Click(object sender, System.Eve

ntArgs e)

4: {

5: try

6: {

7: twnSession.AcquirePage +=new EventHandler
rePageEventArgs>(twnSession_AcquirePage);

8: twnSession.Acquire(TwainUserInterfaceFlags.Show);

9: }

10: catch (Exception ex)

11: {

12: MessageBox.Show(this, ex.Message);

13: }

14: }



14. 为 buttonSelectSource Click 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void buttonSelectSource_Click(object sender, Syste

m.EventArgs e)

4: {

5: try

6: {

7: twnSession.SelectSource(string.Empty);

8: }

9: catch (Exception ex)

10: {

11: MessageBox.Show(this, ex.Message);

12: }

13: }





15. 为 buttonSaveTemplateFile Click 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void buttonSaveTemplateFile_Click(object sender, S

ystem.EventArgs e)

4: {

5: try

6: {

7: twnSession.SaveTemplateFile(@"c:\test.ltt");

8: }

9: catch (Exception ex)

10: {

11: MessageBox.Show(this, ex.Message);

12: }

13: }





16. 为 buttonLoadTemplateFile Click 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void buttonLoadTemplateFile_Click(object sender, S

ystem.EventArgs e)

4: {

5: try

6: {

7: twnSession.LoadTemplateFile(@"c:\test.ltt");

8: }

9: catch (Exception ex)

10: {

11: MessageBox.Show(this, ex.Message);

12: }

13: }





17. 为 radioNative CheckedChanged 事件添加事件句柄,并添加以下代码:

1: [C#]

2:

3: private void radioNative_CheckedChanged(object sender, Sys

tem.EventArgs e)

4: {

5: try

6: {

7: TwainCapability capability =new TwainCapability();

8: capability.Information.ContainerType = TwainContaine

rType.OneValue;

9: capability.Information.Type = TwainCapabilityType.Im

ageTransferMechanism;

10: capability.OneValueCapability.ItemType = TwainItemTy

pe.Uint16;

11: capability.OneValueCapability.Value = (UInt16)TwainT

ransferMechanism.Native;

12: twnSession.SetCapability(capability, TwainSetCapabil

ityMode.Set);

13: }

14: catch (Exception ex)

15: {

16: MessageBox.Show(this, ex.Message);

17: }

18: }



18. 为 radioMemory CheckedChanged 事件添加事件句柄,代码如下:

1: [C#]

2:

3: private void radioMemory_CheckedChanged(object sender, Sys

tem.EventArgs e)

4: {

5: try

6: {

7: TwainCapability capability =new TwainCapability();

8: capability.Information.ContainerType = TwainContaine

rType.OneValue;

9: capability.Information.Type = TwainCapabilityType.Im

ageTransferMechanism;

10: capability.OneValueCapability.ItemType = TwainItemTy

pe.Uint16;

11: capability.OneValueCapability.Value = (UInt16)TwainT

ransferMechanism.Memory;

12: twnSession.SetCapability(capability, TwainSetCapabil

ityMode.Set);

13: }

14: catch (Exception ex)

15: {

16: MessageBox.Show(this, ex.Message);

17: }

18: }



19. 为 radioFile CheckedChanged 事件添加事件句柄,代码如下:

1: [C#]

2:

3: private void radioFile_CheckedChanged(object sender, Syste

m.EventArgs e)

4: {

5: try

6: {

7: TwainCapability capability =new TwainCapability();

8: capability.Information.ContainerType = TwainContaine

rType.OneValue;

9: capability.Information.Type = TwainCapabilityType.Im

ageTransferMechanism;

10: capability.OneValueCapability.ItemType = TwainItemTy

pe.Uint16;

11: capability.OneValueCapability.Value = (UInt16)TwainT

ransferMechanism.File;

12: twnSession.SetCapability(capability, TwainSetCapabil

ityMode.Set);

13: }

14: catch (Exception ex)

15: {

16: MessageBox.Show(this, ex.Message);

17: }

18: }

20. 编译并运行程序。

献花(0)
+1
(本文系考试资料文...原创)