2016 - 2024

感恩一路有你

Delphi中直接操纵扫描仪的方法

浏览量:4184 时间:2024-07-14 14:55:36 作者:采采

在Delphi中,我们可以通过多种方法来获取所需的扫描仪图像信息。具体而言,有三种基本的方法可供选择。

方法一:使用图像处理软件

首先,我们可以使用图像处理软件(如Photoshop等)的扫描图像功能,将其加工成所需格式的图像,然后在自己的系统中使用。这种方法减少了编程的复杂性,但系统集成度较低,用户使用不方便。

方法二:使用Twain.DLL接口

第二种方法是通过Twain.DLL接口来控制扫描仪。该接口是在安装扫描仪时提供的,实际上是一个插件,通过一系列函数来控制扫描仪。这种方法在编程上提供了最大的灵活性和可控性。

方法三:使用构件技术

第三种方法是利用Delphi的可视化构件技术来控制扫描仪。这种方法安全、灵活且自由度较高,同时也是建立在Twain.DLL接口之上的。在Windows 9X中,附件中提供了四个OCX构件(imgEdit、imgAnntool、imgScan、imgAdmin),通过使用这些构件,我们可以完全控制扫描仪。

如何使用OCX构件

首先,在Windows 9X中安装"映象"可选项。在控制面板中选择"添加/删除程序",再选择"安装Windows",点击"附件"复选框,然后可以找到"映象"选项。启动Delphi,选择"Component"菜单项下的"Import ActiveX Control",可以看到列表中有"Wang图象编辑控制"、"Wang图象扫描控制"、"Wang图象管理控制"、"Wang图象缩略图控制"四个构件。选中这四个构件,然后点击"Install"按钮,这样在构件面板上的ActiveX舌标下就可以看到这四个构件的图标。

ImgScan构件的属性和方法

ImgScan构件有几个重要的属性,包括FileType(图像文件类型)、ScanTo(被扫描图像的目的)、DestImageControl(Wang ImgEdit构件名)和Zoom(图像的放缩比例)。此外,ImgScan构件还有一些主要的方法,如OpenScanner(打开扫描仪)、CloseScanner(关闭扫描仪)、StartScan(开始扫描)和StopScan(停止扫描)等。

ImgEdit构件的属性和方法

ImgEdit构件的属性主要用于控制扫描图像的分辨率、宽高以及是否允许对图像进行局部选择等。它还提供了一些方法,如拷贝、剪切图像到粘贴板,从粘贴板复制图像,旋转、放缩、镜像图像,打印、保存、刷新图像等功能。

使用示例

以下是使用ImgScan和ImgEdit构件的一些示例代码:

```delphi

procedure Tscanf.N1Click(Sender: TObject);

begin

; //选择系统中已安装的扫描仪

end;

procedure Tscanf.N2Click(Sender: TObject);

begin

imgedit1.zoom : 100; //设置图像的放缩因子

if not then //如果选择的扫描仪不可用

; //打开扫描仪

; //开始扫描图像

; //关闭扫描仪

end;

procedure Tscanf.N8Click(Sender: TObject);

begin

if ( and ) then

(selleft, seltop); //从剪贴板粘贴图像,参数为Imgedit的显示区域的起始坐标

end;

procedure Tscanf.N1801Click(Sender: TObject);

begin

if then

imgedit1.Flip; //镜像图像

end;

procedure Tscanf.N901Click(Sender: TObject);

begin

if then

; //向右旋转图像

end;

procedure Tscanf.N6Click(Sender: TObject);

begin

imgedit1.DrawSelectionRect(selleft, seltop, selwidth, selheight); //进行图像局部选择

(selleft, seltop, selwidth, selheight); //剪切所选区域

end;

```

需要注意的是,在使用Imgedit构件的拷贝和剪切功能时,可能会遇到以下问题:

1. 如果选择了整幅图像,没有任何问题。

2. 如果选择了局部区域,则拷贝和剪切的区域可能会发生漂移。

3. 如果使用DELPHI作为MS SQL后端数据库的客户端界面,并将图像内容写入数据库的图像字段时,可能会遇到BDE(数据库引擎)报错。这是DELPHI 3.0和4.0的一个BUG,但可以通过4.0的升级包解决。

对于第二个问题,可以在Imgedit的onSelectionRectDrawn事件中编写代码,将选择区域的边界值保存到全局变量中,在拷贝和剪切之前重新选择即可。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。