Delphi中直接操縱掃描儀的方法
在Delphi中,我們可以通過多種方法來獲取所需的掃描儀圖像信息。具體而言,有三種基本的方法可供選擇。方法一:使用圖像處理軟件首先,我們可以使用圖像處理軟件(如Photoshop等)的掃描圖像功能,將
在Delphi中,我們可以通過多種方法來獲取所需的掃描儀圖像信息。具體而言,有三種基本的方法可供選擇。
方法一:使用圖像處理軟件
首先,我們可以使用圖像處理軟件(如Photoshop等)的掃描圖像功能,將其加工成所需格式的圖像,然后在自己的系統(tǒng)中使用。這種方法減少了編程的復雜性,但系統(tǒng)集成度較低,用戶使用不方便。
方法二:使用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
; //選擇系統(tǒng)中已安裝的掃描儀
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的顯示區(qū)域的起始坐標
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); //剪切所選區(qū)域
end;
```
需要注意的是,在使用Imgedit構件的拷貝和剪切功能時,可能會遇到以下問題:
1. 如果選擇了整幅圖像,沒有任何問題。
2. 如果選擇了局部區(qū)域,則拷貝和剪切的區(qū)域可能會發(fā)生漂移。
3. 如果使用DELPHI作為MS SQL后端數據庫的客戶端界面,并將圖像內容寫入數據庫的圖像字段時,可能會遇到BDE(數據庫引擎)報錯。這是DELPHI 3.0和4.0的一個BUG,但可以通過4.0的升級包解決。
對于第二個問題,可以在Imgedit的onSelectionRectDrawn事件中編寫代碼,將選擇區(qū)域的邊界值保存到全局變量中,在拷貝和剪切之前重新選擇即可。