2017-06-22 105 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总是设定上限后说,“失败”