说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中控制扫描仪

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中控制扫描仪

通过扫描仪接口Twain.DLL 。该接口是在安装扫描仪时提供的,它实际上是一个Plugin插件,它通过一系列函数来控制扫描仪;

通过构件技术来控制扫描仪。

---- 利用第一种方法能减少编程的复杂度,但是系统的集成度不高,用户使用上也不方便;第二种方法能在驱动程序级直接控制扫描仪,能

在编程上提供最大的灵活性和可控性;第三种方法能充分利用Delphi的可视化构件技术,安全、灵活、自由地利用扫描仪。其实第三种方法也

是建立在扫描仪接口Twain.DLL之上的。本文论述的方法就采用第三种。

---- Windows9X在其附件中提供了“映象”可选件,该附件是采用OCX构件来控制扫描仪的,共有imgEdit、imgAnntool、imgScan、imgAdmin 四个,有这四个构件基本上就能完全控制扫描仪。在Delphi中的用法如下: 在Windows9x中选择安装“映象”。(在控制面板中选择“添加/删除程序”,再选择“安装Windows”,点击“附件”复选框,然后从“详细资料”按钮中可以找到“映象”)

启动Delphi,选择“Component”菜单项下的“Import ActiveX Control”,

这时可以看到列表中有“Wang 图象编辑控制、Wang 图象扫描控制、Wang

图象管理控制、Wang 图象缩略图控制”,选中这四项,然后点击“Install”

按钮,这时在构件面板上的ActiveX舌标下就可以看到这四个构件的图标。

---- ImgScan 的主要属性:FileType:图象的文件类型(该构件支持三

种:TIFF,BMP,AWD);

ScanTo:返回或设置被扫描图象的目的;

可取值 含义

0 (缺省) 显示被扫描的图象.

1 显示被扫描的图象并写入一个文件.

2 把图象写入一个文件

3 以模板方式把图象写入文件并显示.

4 . 以模板方式把图象写入文件

5 传真被扫描的图象

注意:如果取缺省值0,

必须和 Wang ImgEdit 构件配合使用。

DestImageControl:Wang ImgEdit构件名;

Zoom:图象的放缩比例

ImgScan 的主要方法:OpenScanner :打开扫描仪;

CloseScanner :关闭扫描仪;

StartScan : 开始扫描;

StopScan : 停止扫描

---- ImgEdit 的属性主要是控制扫描图象的分辨率、图象的宽高、是否

允许对图象进行局部选 择等;其方法主要有拷贝、剪切图象到粘贴板,

从粘贴板复制图象,旋转、放缩、 镜象图象;打印、保存、刷新图象等。

---- 关于上述四个OCX构件的详细使用说明可在Delphi中查看其自带的

帮助系统。

---- 下面是使用这两个构件的一些例子:

procedure Tscanf.N1Click(Sender: Tobject);

begin

ImgScan1.ShowSelectScanner;

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

end;

procedure Tscanf.N2Click(Sender: Tobject);

begin

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

if not imgscan1.ScannerAvailable then

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

imgscan1.OpenScanner;//打开扫描仪

imgscan1.StartScan; //开始扫描图象

imgscan1.CloseScanner; //关闭扫描仪

end;

procedure Tscanf.N8Click(Sender: Tobject);

begin

if (imgedit1.IsClipboardDataAvailable

and imgedit1.ImageDisplayed ) then

imgedit1.ClipboardPaste(selleft

seltop);

//从剪贴板粘贴图象,其参数为Imgedit的显示区域的起始坐标

end;

procedure Tscanf.N1801Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

imgedit1.Flip; //镜象图象

end;

procedure Tscanf.N901Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

imgedit1.RotateRight //向右旋转图象

end;

procedure Tscanf.N6Click(Sender: Tobject);

begin

imgedit1.DrawSelectionRect(selleft

seltop

selwidth

selheight);//进行图象局部选择

imgedit1.ClipboardCut(selleft

seltop

selwidth

selheight);//剪切所选区域

end;

---- 注意:在DELPHI中使用Imgedit构件的拷贝和剪切功能时,会出现

以下问题:

---- 1、 如果把整幅图象都选中,没有任何问题;

---- 2、 如果选择了局部区域,则拷贝和剪切的区域会发生漂移;

---- 3、 如果DELPHI做的是MS SQL后端数据库的客户端界面,那么在把

图象内容写入数据库的图象字段中时,BDE(数据库引擎)会报错。这是

DELPHI3。0和4。0的BUG,4。0的升级包可以解决这个问题。

---- 至于第二个问题,可这样解决:在Imgedit的onSelectionRectDrawn

事件中写一段代码,把选择区域的边界值保存到四个全局变量中,在拷贝

和剪切之前用先前保存的变量再进行一次选择即可(当然,这一切都在后

台进行的,见前面的例子)。

---- 开发环境:DELPHI4。0,HP ScanJet 4P扫描仪;

---- 附源代码。

unit scanu;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

Menus

ScanLib_TLB

ExtCtrls

AxCtrls

OleCtrls

ImgeditLib_TLB;

type

Tscanf = class(Tform)

MainMenu1: TMainMenu;

F1: TMenuItem;

N15: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

N16: TMenuItem;

N11: TMenuItem;

N5: TMenuItem;

C1: TMenuItem;

N4: TMenuItem;

E1: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N3: TMenuItem;

N10: TMenuItem;

N9: TMenuItem;

N1801: TMenuItem;

N901: TMenuItem;

N902: TMenuItem;

H1: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

ImgEdit1: TImgEdit;

Bevel1: Tbevel;

ImgScan1: TImgScan;

Bevel2: Tbevel;

procedure N4Click(Sender: Tobject);

procedure N1Click(Sender: Tobject);

procedure N2Click(Sender: Tobject);

procedure C1Click(Sender: Tobject);

procedure N8Click(Sender: Tobject);

procedure N1801Click(Sender: Tobject);

procedure N901Click(Sender: Tobject);

procedure N902Click(Sender: Tobject);

procedure N6Click(Sender: Tobject);

procedure N7Click(Sender: Tobject);

procedure ImgEdit1SelectionRectDrawn(Sender: Tobject; Left

Top

Width

Height: Integer);

procedure N11Click(Sender: Tobject);

private

{ Private declarations }

public

selleft

seltop

selwidth

selheight:integer;

{ Public declarations }

end;

var

scanf: Tscanf;

implementation

{$R *.DFM}

procedure Tscanf.N4Click(Sender: Tobject);

begin

imgedit1.ClearDisplay;

close;

end;

procedure Tscanf.N1Click(Sender: Tobject);

begin

ImgScan1.ShowSelectScanner;

end;

procedure Tscanf.N2Click(Sender: Tobject);

begin

imgedit1.zoom:=100;

if not imgscan1.ScannerAvailable then

imgscan1.OpenScanner;

imgscan1.StartScan;

imgscan1.CloseScanner;

end;

procedure Tscanf.C1Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

begin

imgedit1.ClearDisplay;

imgedit1.zoom:=100;

end;

end;

procedure Tscanf.N8Click(Sender: Tobject);

begin

if (imgedit1.IsClipboardDataAvailable and imgedit1.ImageDisplayed )

then

imgedit1.ClipboardPaste(selleft

seltop);

end;

procedure Tscanf.N1801Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

imgedit1.Flip;

end;

procedure Tscanf.N901Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

imgedit1.RotateRight

end;

procedure Tscanf.N902Click(Sender: Tobject);

begin

if imgedit1.ImageDisplayed then

imgedit1.RotateLeft;

end;

procedure Tscanf.N6Click(Sender: Tobject);

begin

imgedit1.DrawSelectionRect(selleft

seltop

selwidth

selheight);

imgedit1.ClipboardCut(selleft

seltop

selwidth

selheight);

end;

procedure Tscanf.N7Click(Sender: Tobject);

begin

imgedit1.DrawSelectionRect(selleft

seltop

selwidth

selheight);

imgedit1.ClipboardCopy(selleft

seltop

selwidth

selheight);

end;

procedure Tscanf.ImgEdit1SelectionRectDrawn(Sender: Tobject; Left

Top

Width

Height: Integer);

begin

if ((width=0) and (height=0))then

begin

n3.Enabled:=false;

n6.Enabled:=false;

n7.Enabled:=false;

selleft:=left;

seltop:=top;

selwidth:=width;

selheight:=height;

end

else begin

n6.Enabled:=true;

n7.Enabled:=true;

selleft:=left;

seltop:=top;

selwidth:=width;

selheight:=height;

end;

end;

procedure Tscanf.N11Click(Sender: Tobject);

begin

if not imgedit1.IsClipboardDataAvailable then

if imgedit1.imagedisplayed then

imgedit1.ClipboardCopy(0

0

imgedit1.Width

imgedit1.Height);

end;

end.

Windows 的登录资料库 -VB资料 把回车键变成TAB键-VB资料 把文件置入到Text或RichText中 -VB资料 避免按 [ENTER] 回车键产生的“嘀”声 -VB资料 避免使用全局变量-VB资料 避免装载多份应用程序-VB资料 不定个数的参数 -VB资料 不在任务栏中显示,只能在Ctrl+Alt+Del对话框中显示或者干脆什么也不显示数 -VB资料 处理 Dropdown List型 Combo的录入问题-VB资料 VB创建和删除快捷方式 从程序中生成 exe 文件 -VB资料 打开和关闭CD-ROM 驱动器 -VB资料 打开和关闭其他应用 -VB资料 打开一个超连接 -VB资料 当前操作系统的语言集-VB资料 当前系统目录-VB资料 得到磁盘上剩余空间的值-VB资料 调用“添加打印机”对话框 -VB资料 调整分辩率和取当前分辩率 -VB资料 定义全局热键-VB资料 动记录应用软件工作时间-VB资料 动态改变屏幕设置-VB资料 读取档案的建立时间及存取时间 -VB资料 多个参数的属性 -VB资料 发现剪帖板的秘密 -VB资料 发现拖(Drap)过来的信息 -VB资料 防止打开同个VB应用多个实例 分割图像的原理 -VB资料 封面的设计 -VB资料 改变 Win95 的 Shell -VB资料 改变墙纸 -VB资料 各位能不能介绍点比较经典的算法的书籍,大家分享一下 如何恢复或新建临时表空间????在线等候!!!马上给分! Gis 请教一个数据库的问题,欢迎发言提出解决方案 ??怎样用asp程序把一段html代码转换成纯文本格式? 下拉数据窗口不能下拉是什么原因啊? 有关用VB做数据库的简单问题、ComboBox控件问题! 大家帮我看看这段程序为什么值为0 oracle8.1.7的数据库备份文件怎样恢复到oracle8i上 ? 怎样屏蔽flash的右键菜单,弹出自己的菜单? 我想问一下有没有不写入数据库用ASP代码可以查看当天的浏览访问量 灌水区的水越来越没质量了,你觉得呢? 按钮消息响应的问题,详细请看进去再看 异常详细信息: System.Data.OleDb.OleDbException: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。 求助,网页制作0=={=========>(在线等,送分) 谁能告诉我《C++Builder 5编程实例与技巧》这本书在哪儿可以下载到完整的电子版!高分感谢! 请教如何将一张图片旋转? 关于流媒体和vc++的结合,高人请进!! 关于DataOutputStream和DataInputStream求教 会DirectX的一起来讨论! 4444 菜鸟求助~~~ help me 刚才发现www2.google.com www3.google.com也不能访问了,见鬼:( 我想停止window2000[域控制器]的389端口,但我不知服务是不是LDAP,因为我想占用端口389 各位!帮个忙! 帮忙啊!因为很着急,只有在技术论坛发了,大家原谅 电子地图 上海的程序员都在哪里"混"? 如何最小化所有窗口? 你们有谁读大学一学年要交近1000元书籍费? 帮忙啊!因为很着急,只有在技术论坛发了,大家原谅 asp中如何使用ADO实现对sql数据库操作 求助,网页制作0=={=========>(在线等,送分) 我在用mcisendcommond()函数时,总提示设备类型出错,是什摸原因? 紧急求教高分相送100分。 怎么判断女孩喜欢你? CSDN的首页能登录吗? C 与 C++ 到底有什么不同?? 偶然发现的mysql排序问题 是否有专业PL/SQL编辑器(能够提供类似VC的类成员或方法提示、格式自动排版等功能)可以下载 ?? 关于条码编程 非常急,请各位帮忙想想办法 怎样实现同一窗口的不同字体大小的显示 请问谁有HTTP代理服务器内容检查与病毒检查的代码 在程序流程中要等待几秒,应该调用什么函数啊 请问各位高手,哪有C++ Builder 教程可供下载? 有没有办法使用VC控制键盘做Reset动作,即键盘自测的动作。 怎样建立一个企业的WEB网站 高程考试寻求帮助 新店开张,欢迎光临 如何测红酒花青素 葡萄属于酸性还是碱性 在括号中填上恰当的词:1.悬泉瀑布,飞欶( )期间.2.( )清( )荣( )峻( )茂,良多趣味. 玻璃镜子如何擦干净呢?如何能擦干净,而又不会划花玻璃? GB/T2882-1991是指什么标准 围绕“今天真热啊”为开头,并围绕这个中心意思写一段话. 有没有什么好的办法把玻璃和镜子擦的又光又亮啊 眼镜刮花怎么能除去我的是树脂的眼镜加膜了怎么处理?那痕迹很长延长到中间怎么办?是刮花的痕洗得去的吗? 孔和轴的公差带大小是由什么决定的 关于哺乳动物运动系统的叙述正确的是 a 运动系统由骨,关节,骨骼肌组成 b 关节由关节头与关节窝与关节腔组成 c关节软骨与关节腔中的滑液,增强了关节的灵活性 葡萄皮是碱性还是酸性? (10)已知锌与稀硫酸反应为放热反应已知锌与稀硫酸反应为放热反应,某学生为了探究其反应过程中的速率变化,用排水集气法收集反应放出的氢气,实验记录如下:时间(min)12345氢气体积(mL)3012028 请问,怎样才能把玻璃或镜子擦干净 液体温度计通常由____,_____,______,挂环组成 《藤野先生》语句品析但一位先生却以为这客店也包办囚人的饭食,我住在那里不相宜,几次三番,几次三番地说.我虽然觉得客店兼办囚人的饭食和我不相干,然而好意难却,也只得别寻相宜的住 哺乳动物运动系统由骨,关节,骨骼肌组成这句话说得对不对,错的话理由 青城山里面的青青园宾馆在地震中倒了吗如题,不知道有没有人知道这件事啊 显微镜观察到细胞标本偏左上方 怎么解决 请问花青素吃的什么 牌子. 当机体受到伤害性刺激时,神经系统和内分泌系统都有哪些反应?有何生理意义? 用水重结晶乙酰苯胺,在溶解过程中有无油珠状物出现?如有油珠出现应如何处理? 现在有什么眼镜可以防紫外线吗? 天文望远镜的物镜口径做得较大,是为了--------------------?如题啊.thanks you 在对肿瘤的免疫监视中,起重要作用的细胞是什么? 花青素保健品什么牌子好是花青素,不是原花青素 阅读下面材料 写出寓意山野里,一株骄傲的白玉兰芳香四溢. 啄木鸟总是啄个不停.“太吵了,赶快离开!你打扰了我的美梦.”白玉兰说.啄木鸟默默的离开了.白玉兰只留下一群如花般的黄鹂相 免疫具有( )抗原侵入,( )体内衰老,死亡或损伤的细胞,监视,( )和( )体内产生的异常的功能 意大利花青素哪牌子好 阅读下列材料,然后写出其中包含的寓意小姑娘又问苹果:“苹果,你为什么没有长成小瓣呢?是为了让我一个人独吃吗?”“不!”苹果回答,“是为了让你能完整地把我奉献出去.” 下列属于免疫监视功能的是A.呼吸道粘膜纤毛清除异物的作用B.人体随时清除体内的肿瘤细胞C.胃酸杀死胃内的细菌D.噬食体内衰老、死亡、损伤的细胞 实验需要400毫升0.1摩尔每升的硫酸铜溶液,配制溶液时需要称取五水和硫酸铜的质量应是? 阅读下列材料,写出爸爸的意思.女儿将一位生病的同学送到医院,诊断治疗后又将同学送回家,回到自己家里时才想其一件事.女儿对爸爸说:“爸,我忘了跟您买生日礼物.”爸爸笑着对女儿说: 细胞免疫最终怎么清除抗原的?说到了使靶细胞裂解使其中的抗原暴露出来,然后怎么清除抗原?是进行体液免疫么?还是T细胞又怎样了? 比如说硫酸铜溶液,它的摩尔质量为什只有CUSO4的,这这个溶液中含有水,为什么没水的摩尔质量为什么没水的摩尔质量改为为什不加上水的摩尔质量 求问橡胶止水带需要检测哪些项目? 藤野先生一文中最能表现鲁迅对藤野先生怀念之情的词语是 现代天文望远镜力求把物镜的口径做得很大,这样做的目的是让物镜尽可能____. 根据意思写“一”字开头的成语: 如何理解《藤野先生》一文中的“也许”一词? 天文望远镜 口径、焦距大小与成像关系1.口径不变 焦距大小与成像关系2.焦距不变 口径大小与成像关系3.口径焦距最好的比例?不懂怎样问~呵呵口径是指物镜口径在网上看到70/900 80/500 80/800 90 写“一”字开头的成语1、比喻互相配合,互相呼应.2、形容一水之隔,往来方便.3、知道、理解得不够全面透彻.4、一眼就可以看清楚.5、形容十分规矩、严肃.如:形容阅读速度很快。一目十行 关于尺寸公差带的问题 我想要加工一个Φ190H8Φ150H8的零件 请问公差带分别是多少 三轴飞行器和四轴飞行器各有什么优势和难点 葡萄是酸性还是碱性的为什么化学书上测PH是酸性的呢? 写几个“一”字开头的成语. 在MgSO4和Al(NO3)3、Mg(NO3)2溶液中镁离子、铝离子、硫酸根,为什么?原因是什么? 葡萄是酸性还是碱性 仿照例子写出词语例:亮晶晶明___ 毛____ 软______ 喜_______ 凉________ 葡萄是强碱性的,那为什么葡萄干是酸性的? 镜子背后刮花了怎么办 按要求或仿照例子写出有关词语描写天空的四字词语例:ABCC银光闪闪:( )( )( )( )例:ABAC自私自利:( )( )( )( )例:AABC奄奄一息:( )( )( )( ) 含有花青素的植物叶子呈红色,它是用花青素进行光合作用的吗? 葡萄是碱性还是酸性 仿照例子分别写词语1.例:白雪—雪白 2.例:相互—互相急用啊 葡萄干是酸性还是碱性经查资料得知:有的说是碱性 而有的说是酸性。众说纷纭,有没有确却点的答案? 葡萄属于碱性还是酸性 铁离子和SCN根离子能共存吗 葡萄干到底是碱性还是酸性的? GB 3275-91什么意思 ‘悬泉瀑布,飞漱其间.’中悬泉瀑布的逐字意思和四字总体意思,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘