繁体   English   中英

如何在Picturebox中自动显示扫描的图像?

[英]How do I display a scanned Image automatically in a Picturebox?

扫描后我需要自动将图像上传到PictureBox

这是PictureBox的名称PictureBox ptbImgDocEmp

这是扫描仪的类别

Scanner.cs

 public class Scanner
 {
    Device oDevice;
    Item oItem;
    CommonDialogClass dlg;
    public Scanner()
    {
        dlg = new CommonDialogClass();
        try
        {
            oDevice = dlg.ShowSelectDevice(WiaDeviceType.ScannerDeviceType, true, false);
        }

        catch (Exception Exp)
        { MessageBox.Show("printer not detected");}

    }

这是一个扫描仪按钮

private void btnSca_Click(object sender, EventArgs e)
    {
        Scanner oScanner = new Scanner();
        oScanner.Scann();

        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.FileName = "test.jpg";
        saveFileDialog.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
        if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            ptbImgDocEmp.Image = Image.FromFile(saveFileDialog.FileName);
            ptbImgDocEmp.Refresh();
        }
    }

要获得最后创建的文件,假设它们的名称是升序的,可以使用以下命令:

using System.IO;
..

string path = @"C:\Users\MyComputer\Documents\Scanned Documents";

var files = Directory.GetFiles(yourPath);
var filesSorted = files.OrderBy(x => x);
string lastFile = filesSorted.Last();

如果您的扫描仪软件以非严格升序的名称创建文件,则可以使用以下代码:

var files = Directory.GetFiles(yourPath);
List<FileInfo> filesInfoList = new List<FileInfo>();
foreach(string f in files ) filesInfoList.Add(new FileInfo(f));
var filesSorted = filesInfoList.OrderBy(x => x.CreationTime);
string lastFile = filesSorted.Last().FullName;

那你可以写

ptbImgDocEmp.Image = Image.FromFile(lastFile );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM