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 では再現されません。助けてくれる友達はいますか?