У меня есть небольшая функция в приложении Silverlight 4 OOB, которая получает изображение со сканера:
public static BitmapImage GetImageFromScanner()
{
try
{
using (dynamic CommonDialog = AutomationFactory.CreateObject("WIA.CommonDialog"))
{
//Param meanings: (scanner, black and white, maximize quality)
dynamic imageFile = CommonDialog.ShowAcquireImage(1, 2, 131072);
if (imageFile != null)
{
return (BitmapImage)imageFile;
}
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
if (ex.ErrorCode == -2145320939)
{
MessageBox.Show("Could not find an attached scanner.", "Scanner Error", MessageBoxButton.OK);
}
else if (ex.ErrorCode == -2145320957)
{
MessageBox.Show("There is no paper in the scanner.", "Scanner Error", MessageBoxButton.OK);
}
}
return null;
}
Я бы хотел, чтобы функция возвращала BitmapImage, но я не уверен, как преобразовыватьдинамический тип.Я даже не уверен, какой тип imageFile был бы, если бы он не был динамическим.Приведенный выше метод возвращает следующее исключение:
Unable to cast object of type 'System.Runtime.InteropServices.Automation.AutomationMetaObjectProvider' to type 'System.Windows.Media.Imaging.BitmapImage'.
Может ли кто-нибудь дать руководство?Я не уверен, если это вопрос о динамическом ключевом слове или AutomationFactory, так как оба являются новыми для меня.: /
РЕДАКТИРОВАТЬ:
Я знаю, что это изображение, потому что если я сделаю это:JPG.Я попытался выяснить, какой объект в .NET Framework имеет метод SaveFile (), и, по-видимому, их много.