不支持NTwain ICapSupportedSizes

时间:2018-09-26 15:41:34

标签: c# winforms twain

我正在使用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,无论如何。我已经对其进行了更新,以获取源代码并使用它来更改设置并调用“启用”,但是它仍然无法正常工作。

感谢您的帮助。

谢谢!

环境信息

  • .NET Framework 4.6.1
  • 赢得表格
  • C#
  • NTwain
  • 扫描仪:佳能平板扫描仪单元102

1 个答案:

答案 0 :(得分:0)

您将需要使用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);