4

我试图在 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 中重现。有帮助的朋友吗?

4

0 回答 0