TwainDotNet特定区域扫描



在我的应用程序中,我使用TwainDotNet库,并从平板扫描特定区域。

public Prasymas scanForm(Prasymas prasymas, bool isItFirstScan)
    {
        Enabled = false;
        _settings = new ScanSettings();
        _settings.UseDocumentFeeder = false;
        _settings.ShowTwainUI = false;
        _settings.ShowProgressIndicatorUI = true;
        _settings.UseDuplex = false;
        _settings.Resolution =
            false
            ? ResolutionSettings.Fax : ResolutionSettings.ColourPhotocopier;
        _settings.Page = PageSettings.Default;
        if (!isItFirstScan) 
        {
            _prasymas = prasymas;
            AreaSettings = new AreaSettings(Units.Centimeters, 0.0f, 0.0f, (float)(_prasymas.maxScanAukstis), 0.0f);                
        }
        else
        {
            _settings.Area = !false ? null : AreaSettings;
        }
        _settings.ShouldTransferAllPages = true;

        _settings.Rotation = new RotationSettings()
        {
            AutomaticRotate = false,
            AutomaticBorderDetection = false
        };
        try
        {
            _twain.SelectSource();
            _twain.StartScanning(_settings);
        }
        catch (TwainException ex)
        {
            if (ex.Message == "Error opening data source")
            {
                _twain.SelectSource();
                scanForm(_prasymas, isItFirstScan);
                Enabled = true;
            }
            else
                throw ex;
        }
        catch (Exception exc)
        {
            if (exc.Message == "Pasiuto skeneris")
            {
                scanForm(_prasymas, true);                    
            }
            else
                throw exc;
        }
        Enabled = true;
        return prasymas;
    }

但结果是,当扫描开始时,扫描源是Twain驱动程序,它会扫描整个页面,但如果我选择WIA驱动程序,我会得到特别选择的区域。主要想法是,应用程序第一次扫描整个页面时启动,下次只扫描页面的特定高度。

阅读文档后,我发现只需要注释掉旋转部分,一切就开始工作了。我可以扫描选定的区域。

最新更新