扫描后在用户界面中加载首页

时间:2019-01-21 12:29:36

标签: c# xml wpf visual-studio c#-4.0

我想在UI中加载扫描的第一页(在连接的扫描仪中),但是现在在此代码中,最后一页加载在UI中。谁能分析代码并告诉我确切的结构是什么,以便显示第一页? enter image description here

 /// <summary>
    /// Loads the invoice in the UI, with its associated data.
    /// </summary>
    private void ShowImFromPDF()
    {
        IoC.Main.InvoiceCount = IoC.Main.Invoices.Count;

        GlobalVars.WriteLog("Updating image and data");
        if (IoC.Main.InvoiceIndex >= 0 && IoC.Main.InvoiceIndex < IoC.Main.Invoices.Count)
        {
            IoC.Main.LoadInfo = true;
            PdfDocument document = PdfReader.Open(IoC.Main.Invoices[IoC.Main.InvoiceIndex].Path);

            foreach (PdfPage page in document.Pages)
            {
                foreach (System.Drawing.Image image in page.GetImages())
                {
                    pictureBox1.Source = HelperMethods.ToBitMapImage(image);
                }
            }

1 个答案:

答案 0 :(得分:0)

正如我在评论中写道 它看起来像foreach循环会覆盖所有图像,这就是为什么看起来好像最后一张图片的原因,您应该使用类似page.GetImages().FirstOrDefault()的图像 我的意思是,您要遍历pdf中的所有页面以及页面中的所有图像,并将每个页面放到相同的pictureBox

如何使用FirstOrDefault:

这将获取可为null的int列表,这意味着该项目可以为int或null

 public static void doStuff(List<int?> nullableList)
        {            

            var firstItem = nullableList.FirstOrDefault();
            if (firstItem != null)
                Console.WriteLine(firstItem);
            else
                Console.WriteLine("first item is null");
        }

发送示例

   List<int?> nullableList = new List<int?>() { 1, null, 2, 3, null };
   doStuff(nullableList);

    List<int?> nullableList1 = new List<int?>() { null, null, 2, 3, null };
    doStuff(nullableList1);

结果

  

1

     

“第一项为空”

根据您的逻辑,您应该从y页面获取x图片