内存不足在WPF中打印时出现异常

时间:2013-09-18 12:44:51

标签: c# wpf exception printing fixeddocument

我试图在WPF中打印70张图像。 所以我使用了固定文档,就像我在许多参考文献中看到的那样,并尝试使用下面的代码进行打印。

private void button1_Click(object sender, RoutedEventArgs e)
    {
        PrintDialog d = new PrintDialog();
        d.PrintDocument(PrintingDoc().DocumentPaginator, "test");
    }

    private FixedDocument PrintingDoc()
    {
        FixedDocument document = new FixedDocument();
        Visual viewerControl;
        string[] Documents = System.IO.Directory.GetFiles("../../U/");
        DrawingVisual dv;
        DrawingContext context ;
        BitmapImage im ;
        foreach (string doc in Documents)
        {

                dv = new DrawingVisual();
                context = dv.RenderOpen();
                im = new BitmapImage();
                im.BeginInit();
                im.UriSource = new Uri(doc, UriKind.Relative);
                im.EndInit();
                context.DrawImage(im, new Rect(0,0,im.Width,im.Height));
                context.Close();

                PageContent m_PageContent = new PageContent();
                FixedPage page = new FixedPage();

                VisCont myContainer = new VisCont();
                myContainer.AddVisual(dv);
                page.Children.Add(myContainer);
                ((IAddChild)m_PageContent).AddChild(page);
                document.Pages.Add(m_PageContent);
            }
        }
        return document;
    }
}
internal class VisCont: FrameworkElement
{
    private readonly VisualCollection children;
    public VisCont()
    {
        children = new VisualCollection(this);
    }

    public void AddVisual(Visual v)
    {
        children.Add(v);
    }
}

我在d.PrintDocument中得到了以下异常 “内存不足,无法继续执行程序。”

并且对于注释,这仅在X86配置中重现,而不在X64中重现。 有帮助的朋友吗?

0 个答案:

没有答案