2017-06-22 306 views
1

我在WinForms中創建了一個應用程序,該應用程序可以列出所有的wia掃描儀,並使用所選設備進行掃描。TWAIN掃描的設置分辨率

每當我使用TWAIN掃描而不使用TWAIN用戶界面時,我得到的圖像質量差。

我的代碼是基於這裏找到包裝:https://www.codeproject.com/Articles/1376/NET-TWAIN-image-scanner?msg=1097187#xx1097187xx,我試圖設置DPI分辨率規格爲http://www.twain.org/wp-content/uploads/2016/03/TWAIN-2.2-Spec.pdf

,但它並沒有任何區別。

TwFix32 f32 = new TwFix32(); 
f32.FromFloat(300);//value of DPI 

// Set X resolution. 
TwCapability capX = new TwCapability(TwCap.XResolution, f32.Whole); 
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capX); 

// Set Y resolution. 
TwCapability capY = new TwCapability(TwCap.YResolution, f32.Whole); 
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capY); 

回答

2

它的工作通過創建一個新的構造:

public TwCapability(TwCap cap, short sval, TwType twtype) 
{ 
    Cap = (short)cap; 
    ConType = (short)TwOn.One; 
    Handle = Twain.GlobalAlloc(0x42, 6); 
    IntPtr pv = Twain.GlobalLock(Handle); 
    Marshal.WriteInt16(pv, 0, (short)TwType.Int16); 
    Marshal.WriteInt32(pv, 2, (int)sval); 
    Marshal.WriteInt16(pv, 0, (short)twtype); 
    Twain.GlobalUnlock(Handle); 
} 


TwCapability capResx = new TwCapability(TwCap.ICAP_XRESOLUTION, 300, TwType.Fix32); 
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capResx); 


TwCapability capResy = new TwCapability(TwCap.ICAP_YRESOLUTION, 300, TwType.Fix32); 
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capResy); 
的RC總是設定上限後說,「失敗」