Delphi中直接操縱掃描儀的方法
在Delphi中,我們可以通過多種方法來獲取所需的掃描儀圖像信息。具體而言,有三種基本的方法可供選擇。方法一:使用圖像處理軟件首先,我們可以使用圖像處理軟件(如Photoshop等)的掃描圖像功能,將
在Delphi中,我們可以通過多種方法來獲取所需的掃描儀圖像信息。具體而言,有三種基本的方法可供選擇。
方法一:使用圖像處理軟件
首先,我們可以使用圖像處理軟件(如Photoshop等)的掃描圖像功能,將其加工成所需格式的圖像,然后在自己的系統(tǒng)中使用。這種方法減少了編程的復(fù)雜性,但系統(tǒng)集成度較低,用戶使用不方便。
方法二:使用Twain.DLL接口
第二種方法是通過Twain.DLL接口來控制掃描儀。該接口是在安裝掃描儀時(shí)提供的,實(shí)際上是一個(gè)插件,通過一系列函數(shù)來控制掃描儀。這種方法在編程上提供了最大的靈活性和可控性。
方法三:使用構(gòu)件技術(shù)
第三種方法是利用Delphi的可視化構(gòu)件技術(shù)來控制掃描儀。這種方法安全、靈活且自由度較高,同時(shí)也是建立在Twain.DLL接口之上的。在Windows 9X中,附件中提供了四個(gè)OCX構(gòu)件(imgEdit、imgAnntool、imgScan、imgAdmin),通過使用這些構(gòu)件,我們可以完全控制掃描儀。
如何使用OCX構(gòu)件
首先,在Windows 9X中安裝"映象"可選項(xiàng)。在控制面板中選擇"添加/刪除程序",再選擇"安裝Windows",點(diǎn)擊"附件"復(fù)選框,然后可以找到"映象"選項(xiàng)。啟動(dòng)Delphi,選擇"Component"菜單項(xiàng)下的"Import ActiveX Control",可以看到列表中有"Wang圖象編輯控制"、"Wang圖象掃描控制"、"Wang圖象管理控制"、"Wang圖象縮略圖控制"四個(gè)構(gòu)件。選中這四個(gè)構(gòu)件,然后點(diǎn)擊"Install"按鈕,這樣在構(gòu)件面板上的ActiveX舌標(biāo)下就可以看到這四個(gè)構(gòu)件的圖標(biāo)。
ImgScan構(gòu)件的屬性和方法
ImgScan構(gòu)件有幾個(gè)重要的屬性,包括FileType(圖像文件類型)、ScanTo(被掃描圖像的目的)、DestImageControl(Wang ImgEdit構(gòu)件名)和Zoom(圖像的放縮比例)。此外,ImgScan構(gòu)件還有一些主要的方法,如OpenScanner(打開掃描儀)、CloseScanner(關(guān)閉掃描儀)、StartScan(開始掃描)和StopScan(停止掃描)等。
ImgEdit構(gòu)件的屬性和方法
ImgEdit構(gòu)件的屬性主要用于控制掃描圖像的分辨率、寬高以及是否允許對(duì)圖像進(jìn)行局部選擇等。它還提供了一些方法,如拷貝、剪切圖像到粘貼板,從粘貼板復(fù)制圖像,旋轉(zhuǎn)、放縮、鏡像圖像,打印、保存、刷新圖像等功能。
使用示例
以下是使用ImgScan和ImgEdit構(gòu)件的一些示例代碼:
```delphi
procedure Tscanf.N1Click(Sender: TObject);
begin
; //選擇系統(tǒng)中已安裝的掃描儀
end;
procedure Tscanf.N2Click(Sender: TObject);
begin
imgedit1.zoom : 100; //設(shè)置圖像的放縮因子
if not then //如果選擇的掃描儀不可用
; //打開掃描儀
; //開始掃描圖像
; //關(guān)閉掃描儀
end;
procedure Tscanf.N8Click(Sender: TObject);
begin
if ( and ) then
(selleft, seltop); //從剪貼板粘貼圖像,參數(shù)為Imgedit的顯示區(qū)域的起始坐標(biāo)
end;
procedure Tscanf.N1801Click(Sender: TObject);
begin
if then
imgedit1.Flip; //鏡像圖像
end;
procedure Tscanf.N901Click(Sender: TObject);
begin
if then
; //向右旋轉(zhuǎn)圖像
end;
procedure Tscanf.N6Click(Sender: TObject);
begin
imgedit1.DrawSelectionRect(selleft, seltop, selwidth, selheight); //進(jìn)行圖像局部選擇
(selleft, seltop, selwidth, selheight); //剪切所選區(qū)域
end;
```
需要注意的是,在使用Imgedit構(gòu)件的拷貝和剪切功能時(shí),可能會(huì)遇到以下問題:
1. 如果選擇了整幅圖像,沒有任何問題。
2. 如果選擇了局部區(qū)域,則拷貝和剪切的區(qū)域可能會(huì)發(fā)生漂移。
3. 如果使用DELPHI作為MS SQL后端數(shù)據(jù)庫(kù)的客戶端界面,并將圖像內(nèi)容寫入數(shù)據(jù)庫(kù)的圖像字段時(shí),可能會(huì)遇到BDE(數(shù)據(jù)庫(kù)引擎)報(bào)錯(cuò)。這是DELPHI 3.0和4.0的一個(gè)BUG,但可以通過4.0的升級(jí)包解決。
對(duì)于第二個(gè)問題,可以在Imgedit的onSelectionRectDrawn事件中編寫代碼,將選擇區(qū)域的邊界值保存到全局變量中,在拷貝和剪切之前重新選擇即可。