1

私のアプリケーションでは、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 ドライバーを選択すると、特定の領域が選択されます。主なアイデアは、アプリが最初にページ全体をスキャンし、次にページの特定の高さのみをスキャンすることです。

4

1 に答える 1

0

ドキュメントを読んだ後、回転部分をコメントアウトするだけですべてが機能し始めたことがわかりました。選択した領域をスキャンできます。

于 2015-02-18T13:09:33.580 に答える