大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 在Delphi中控制扫描仪

在Delphi中控制扫描仪

时间: 2021-07-31 作者:daque

---- 在运用delphi开拓消息处置体例时,往往要处置图象,这也是消息处置体例兴盛的必定趋向。还好吗在delphi中经过扫描仪赢得所需的图象消息呢?不过乎有三种基础的本领: 经过图象处置软硬件,比方说photoshop等,经过它们的扫描图象的功效,加工成确定方法的图象后再在本人的体例中运用; 经过扫描仪接口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);beginimgscan1.showselectscanner; file://采用体例中已安置的扫描仪end;procedure tscanf.n2click(sender: tobject);beginimgedit1.zoom:=100; file://树立图象的放缩因子if not imgscan1.scanneravailable then file://即使采用的扫描仪不行用imgscan1.openscanner;//翻开扫描仪imgscan1.startscan; file://发端扫描图象imgscan1.closescanner; file://封闭扫描仪end;procedure tscanf.n8click(sender: tobject);beginif (imgedit1.isclipboarddataavailable and imgedit1.imagedisplayed ) thenimgedit1.clipboardpaste(selleft,seltop);file://从剪贴板粘贴图象,其参数为imgedit的表露地区的开始坐标end;procedure tscanf.n1801click(sender: tobject);beginif imgedit1.imagedisplayed thenimgedit1.flip; file://镜象图象end;procedure tscanf.n901click(sender: tobject);beginif imgedit1.imagedisplayed thenimgedit1.rotateright file://向右回旋图象end;procedure tscanf.n6click(sender: tobject);beginimgedit1.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;interfaceuseswindows, messages, sysutils, classes, graphics, controls, forms, dialogs, menus, scanlib_tlb, extctrls, axctrls, olectrls, imgeditlib_tlb;typetscanf = 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 }publicselleft,seltop,selwidth,selheight:integer;{ public declarations }end;varscanf: tscanf;implementation{$r *.dfm}procedure tscanf.n4click(sender: tobject);beginimgedit1.cleardisplay;close;end;procedure tscanf.n1click(sender: tobject);beginimgscan1.showselectscanner;end;procedure tscanf.n2click(sender: tobject);beginimgedit1.zoom:=100;if not imgscan1.scanneravailable thenimgscan1.openscanner;imgscan1.startscan;imgscan1.closescanner;end;procedure tscanf.c1click(sender: tobject);beginif imgedit1.imagedisplayed thenbeginimgedit1.cleardisplay;imgedit1.zoom:=100;end;end;procedure tscanf.n8click(sender: tobject);beginif (imgedit1.isclipboarddataavailable and imgedit1.imagedisplayed )thenimgedit1.clipboardpaste(selleft,seltop);end;procedure tscanf.n1801click(sender: tobject);beginif imgedit1.imagedisplayed thenimgedit1.flip;end;procedure tscanf.n901click(sender: tobject);beginif imgedit1.imagedisplayed thenimgedit1.rotaterightend;procedure tscanf.n902click(sender: tobject);beginif imgedit1.imagedisplayed thenimgedit1.rotateleft;end;procedure tscanf.n6click(sender: tobject);beginimgedit1.drawselectionrect(selleft,seltop,selwidth,selheight);imgedit1.clipboardcut(selleft,seltop,selwidth,selheight);end;procedure tscanf.n7click(sender: tobject);beginimgedit1.drawselectionrect(selleft,seltop,selwidth,selheight);imgedit1.clipboardcopy(selleft,seltop,selwidth,selheight);end;procedure tscanf.imgedit1selectionrectdrawn(sender: tobject; left, top, width, height: integer);beginif ((width=0) and (height=0))thenbeginn3.enabled:=false;n6.enabled:=false;n7.enabled:=false;selleft:=left;seltop:=top;selwidth:=width;selheight:=height;endelse beginn6.enabled:=true;n7.enabled:=true;selleft:=left;seltop:=top;selwidth:=width;selheight:=height;end;end;procedure tscanf.n11click(sender: tobject);beginif not imgedit1.isclipboarddataavailable thenif imgedit1.imagedisplayed thenimgedit1.clipboardcopy(0,0,imgedit1.width,imgedit1.height);end;end.

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.