如何在不使用PrintDialog的情况下打印WPF控件的内容?

时间:2016-06-22 15:39:06

标签: c# wpf

有没有办法在不使用PrintDialog的情况下打印WPF控件的内容?我想避免使用PrintDialog,因为除非用户在对话框中检查它,否则将忽略其PrinterSettings.PrintToFile属性。我需要打印到" FILE:"端口没有显示打印对话框或要求用户提供文件名。

我查看了具有静默PrintToFile功能的PrintDocument,但我找不到将WPF控件的内容绘制到文档上的方法。

1 个答案:

答案 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输出或文本文件输出之类的内容,那么这将不合适。