我正在使用WIA捕获从扫描仪到Windows窗体的图像。这是我正在使用的代码:

private void button2_Click(object sender, EventArgs e)
{
    const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
    CommonDialogClass wiaDiag = new CommonDialogClass();
    WIA.ImageFile wiaImage = null;

    wiaImage = wiaDiag.ShowAcquireImage(
            WiaDeviceType.UnspecifiedDeviceType,
            WiaImageIntent.GrayscaleIntent,
            WiaImageBias.MaximizeQuality,
            wiaFormatJPEG, true, true, false);

    WIA.Vector vector = wiaImage.FileData;

    Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData()));
    i.Save(@"D:\prueba1.jpeg");
}

尝试运行此小测试时,出现以下错误:



和这个:



我猜第二个错误是由于第一个错误而引起的,对吗?

对于如何解决这个问题,有任何的建议吗?

最佳答案

第二个错误是由第一个错误引起的。嵌入互操作类型功能仅支持嵌入接口(interface),不支持类。除了将WIA引用上的该选项设置为False并部署互操作库外,您还可以像这样修复它:

 WIA.CommonDialog wiaDiag = new WIA.CommonDialog();

不直观,但允许使用new运算符创建COM接口(interface)。您需要为命名空间名称加上前缀,因为CommonDialog与Winforms CommonDialog类不明确。

10-07 19:00