有没有办法在不使用PrintDialog的情况下打印WPF控件的内容?我想避免使用PrintDialog,因为除非用户在对话框中检查它,否则将忽略其PrinterSettings.PrintToFile属性。我需要打印到" FILE:"端口没有显示打印对话框或要求用户提供文件名。
我查看了具有静默PrintToFile功能的PrintDocument,但我找不到将WPF控件的内容绘制到文档上的方法。
答案 0 :(得分:2)
如果文件格式无关紧要,您可以从WPF控件生成图像,然后将其保存到文件中:
private static RenderTargetBitmap ConvertToBitmap(UIElement uiElement, double resolution)
{
dynamic scale = resolution / 96.0;
uiElement.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
dynamic sz = uiElement.DesiredSize;
dynamic rect = new Rect(sz);
uiElement.Arrange(rect);
dynamic bmp = new RenderTargetBitmap(Convert.ToInt32(scale * (rect.Width)), Convert.ToInt32(scale * (rect.Height)), scale * 96, scale * 96, PixelFormats.Default);
bmp.Render(uiElement);
return bmp;
}
如果您使用的是postcript输出或文本文件输出之类的内容,那么这将不合适。