NTwain ICapSupportedSizes не поддерживается - PullRequest
0 голосов
/ 26 сентября 2018

Я использую NTwain для сканирования документов в память, и у меня все это работает, за исключением одной части: при попытке установить размер сканируемой страницы сканируется вся ширина и высота, а не только указанный размер,

Я пошел и изучил детали возможностей NTwain в текущем источнике и обнаружил, что ICapSupportedSizes не поддерживается ни для каких действий.enter image description here

Вот как я настраиваю возможности (это на открытом, действительном источнике)

_twain.CurrentSource.Capabilities.ICapXResolution.SetValue(new TWFix32() { Whole = 600 });
_twain.CurrentSource.Capabilities.ICapYResolution.SetValue(new TWFix32() { Whole = 600 });
_twain.CurrentSource.Capabilities.ICapPixelType.SetValue(PixelType.BlackWhite);
_twain.CurrentSource.Capabilities.ICapSupportedSizes.SetValue(SupportedSize.USLegal);
_twain.CurrentSource.Capabilities.CapDuplexEnabled.SetValue(BoolType.False);

ОБНОВЛЕНИЕ :

Я обнаружил, что ни одна из настроек на самом деле не работает.Я установил его как черно-белый, даже если в настройках он показывает черно-белый, он отображается в цвете.Не имеет значения, какой DPI я установил, либо по умолчанию 300, несмотря ни на что.Я обновил его, чтобы выбрать источник и использовать его для изменения настроек и вызова Enable, но он все равно не работает.

Любая помощь приветствуется.

Спасибо!

Информация об окружающей среде

  • .NET Framework 4.6.1
  • Win Forms
  • C #
  • NTwain
  • Сканер: планшетный сканер Canon, блок 102

1 Ответ

0 голосов
/ 13 октября 2018

Вам потребуется использовать свойство DGImage.ImageLayout, чтобы установить размер страницы общепринятым способом.

Например:

var ds = _twain.CurrentSource;
ds.Capabilities.ICapUnits.SetValue(Unit.Inches);
ds.DGImage.ImageLayout.Get(out TWImageLayout imageLayout);
imageLayout.Frame = new TWFrame
{
    Left = 0,
    Right = pageWidthInInches,
    Top = 0,
    Bottom = pageHeightInInches
};
ds.DGImage.ImageLayout.Set(imageLayout);
...