⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dpi17.htm

📁 delphi 教程 Delphi 6 常见的大部分函数的使用方法及使用例子
💻 HTM
字号:
<html>
<head>
<title>在Delphi中控制扫描仪</title>
 
 
 
 
 
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
 
 
</head>
<p align="center"><script src="../../1.js"></script></a>

<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center> 
  <table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
    <tbody> 
    <tr> 
       
    </tr>
    </tbody> 
  </table>
  <table border=0 bordercolordark=#66aaff bordercolorlight=#66aaff cellpadding=0 
cellspacing=0 width=680 align="center" height="128">
    <tbody> 
    <tr> 
      <td bgcolor=#ffffff height=18> 
        <div align=center class=H1> <b><font 
      color=#ffa000><b><font color="#FFFFFF">在Delphi中控制扫描仪</font></b> </font></b></font></div>
      </td>
    </tr>
    <tr valign=top> 
      <td class=H1 height=236> 
        <p><br>
          <font face="宋体">在利用Delphi开发信息管理系统时,常常要处理图象,这也是信息管理系统发展的必然趋势。怎样在Delphi中通过扫描仪获得所需的图象信息呢?不外乎有三种基本的方法: 
          </font></p>
        <ol>
          <li><font face="宋体">通过图象处理软件,比如说Photoshop等,通过它们的扫描图象的功能,加工成一定格式的图象后再在自己的系统中利用; 
            <br>
            </font></li>
          <li><font face="宋体">通过扫描仪接口Twain.DLL 。该接口是在安装扫描仪时提供的,它实际上是一个Plugin插件,它通过一系列函数来控制扫描仪; 
            <br>
            </font></li>
          <li><font face="宋体">通过构件技术来控制扫描仪。 </font></li>
        </ol>
        <p><font face="宋体">利用第一种方法能减少编程的复杂度,但是系统的集成度不高,用户使用上也不方便;第二种方法能在驱动程序级直接控制扫描仪,能在编程上提供最大的灵活性和可控性;第三种方法能充分利用Delphi的可视化构件技术,安全、灵活、自由地利用扫描仪。其实第三种方法也是建立在扫描仪接口Twain.DLL之上的。本文论述的方法就采用第三种。 
          </font></p>
        <p><font face="宋体">Windows9X在其附件中提供了“映象”可选件,该附件是采用OCX构件来控制扫描仪的,共有imgEdit、imgAnntool、imgScan、imgAdmin 
          四个,有这四个构件基本上就能完全控制扫描仪。在Delphi中的用法如下: </font>
        <ol>
          <li><font face="宋体">在Windows9x中选择安装“映象”。(在控制面板中选择“添加/删除程序”,再选择“安装Windows”,点击“附件”复选框,然后从“详细资料”按钮中可以找到“映象”) 
            <br>
            </font></li>
          <li><font face="宋体">启动Delphi,选择“Component”菜单项下的“Import ActiveX Control”,这时可以看到列表中有“Wang 
            图象编辑控制、Wang 图象扫描控制、Wang 图象管理控制、Wang 图象缩略图控制”,选中这四项,然后点击“Install”按钮,这时在构件面板上的ActiveX舌标下就可以看到这四个构件的图标。 
            </font></li>
        </ol>
        <p><font face="宋体">ImgScan 的主要属性:FileType:图象的文件类型(该构件支持三种:TIFF,BMP,AWD); 
          </font></p>
        <pre><font face="宋体">ScanTo:返回或设置被扫描图象的目的;
</font></pre>
        <table border="0" cellpadding="1" cellspacing="1" width="623" class="font">
          <tr> 
            <td bgcolor="#ccccff" width="245">可取值</td>
            <td bgcolor="#ccccff" width="369">含义</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">0 (缺省)</td>
            <td width="369">显示被扫描的图象.</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">1</td>
            <td width="369">显示被扫描的图象并写入一个文件.</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">2</td>
            <td width="369">把图象写入一个文件</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">3</td>
            <td width="369">以模板方式把图象写入文件并显示.</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">4</td>
            <td width="369">以模板方式把图象写入文件</td>
          </tr>
          <tr bgcolor="#ffcccc"> 
            <td width="245">5</td>
            <td width="369">传真被扫描的图象</td>
          </tr>
        </table>
        <pre> 注意:如果取缺省值0,
必须和 Wang ImgEdit 构件配合使用。
 DestImageControl:Wang ImgEdit构件名;
Zoom:图象的放缩比例

ImgScan 的主要方法:OpenScanner :打开扫描仪;
CloseScanner :关闭扫描仪; 
StartScan : 开始扫描;
StopScan :  停止扫描

</font></pre>
        <p><font face="宋体">ImgEdit 的属性主要是控制扫描图象的分辨率、图象的宽高、是否允许对图象进行局部选 择等;其方法主要有拷贝、剪切图象到粘贴板,从粘贴板复制图象,旋转、放缩、 
          镜象图象;打印、保存、刷新图象等。 </font></p>
        <p> 关于上述四个OCX构件的详细使用说明可在Delphi中查看其自带的帮助系统。 </font></p>
        <p><font face="宋体">下面是使用这两个构件的一些例子: </font></p>
        <pre><font face="宋体">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;

</font></pre>
        <p> 注意:在DELPHI中使用Imgedit构件的拷贝和剪切功能时,会出现以下问题: </font></p>
        <p><font face="宋体">1、 如果把整幅图象都选中,没有任何问题; </font></p>
        <p><font face="宋体">2、 如果选择了局部区域,则拷贝和剪切的区域会发生漂移; </font></p>
        <p><font face="宋体">3、 如果DELPHI做的是MS SQL后端数据库的客户端界面,那么在把图象内容写入数据库的图象字段中时,BDE(数据库引擎)会报错。这是DELPHI3。0和4。0的BUG,4。0的升级包可以解决这个问题。 
          </font></p>
        <p><font face="宋体">至于第二个问题,可这样解决:在Imgedit的onSelectionRectDrawn事件中写一段代码,把选择区域的边界值保存到四个全局变量中,在拷贝和剪切之前用先前保存的变量再进行一次选择即可(当然,这一切都在后台进行的,见前面的例子)。 
          </font></p>
        <p> 开发环境:DELPHI4。0,HP ScanJet 4P扫描仪; </font></p>
        <p> &nbsp; 转载自计算机世界日报 <b>(文/曹进军)</b> </font>
        <p align="center">&nbsp;</p>
        <p align="center"><font 
      color=#ffa000><b><br>
          </b><b>                                            
      </td>
    </tr>
    </tbody> 
  </table>
</div>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -