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