В настоящее время я работаю над приложением, которое должно сканировать изображения. Он успешно сканирует эти изображения, но при попытке изменить свойства сканирования устройства он использует только последнее измененное свойство.
Мой текущий код для изменения свойств выглядит следующим образом:
public static string Scan()
{
WIA.Device scanner = ScannerManager.Scanner.Connect();
IItem scannerItem = scanner.Items[1];
AdjustWiaSettings(scannerItem);
ImageFile imageFile = (ImageFile)scannerItem.Transfer(FormatID.wiaFormatTIFF);
return SaveScannedFile(imageFile);
}
private static void AdjustWiaSettings(IItem scannerItem)
{
const string WIA_SCAN_COMPRESSION = "4107"; // valid values: 0,5,8
const string WIA_SCAN_COLORING = "6146"; //4 is Black-white, 2 is gray, 1 is color
SetWiaProperty(scannerItem.Properties, WIA_SCAN_COMPRESSION, 5);
SetWiaProperty(scannerItem.Properties, WIA_SCAN_COLORING, 4);
}
private static void SetWiaProperty(IProperties properties, object propName, object propValue)
{
Property prop = properties.get_Item(ref propName);
prop.set_Value(ref propValue);
}
Это только изменяет свойство окраски этих двух, но если две функции SetWiaProperty переключаются, это только изменяет свойство сжатия.
Я пробовал другой подход, перебирающий все свойства, но это дал тот же результат.