C# 如何在WPF中提供完整窗口的打印预览?

C# 如何在WPF中提供完整窗口的打印预览?,c#,wpf,print-preview,C#,Wpf,Print Preview,如何在打印完整窗口之前为其提供打印预览功能,这里是我为打印完整窗口而实现的代码 我的代码隐藏: private void Canvas_Print_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { PrintDialog printdlg = new PrintDialog(); MainWindow win = new MainWindow();

如何在打印完整窗口之前为其提供打印预览功能,这里是我为打印完整窗口而实现的代码

我的代码隐藏:

private void Canvas_Print_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            PrintDialog printdlg = new PrintDialog();
            MainWindow win = new MainWindow();
            this.Width = 350;
            this.Background = Brushes.White;
            panel.ScrollToTop();
            panel.ScrollToLeftEnd();
            win.Tag = this;
            if (printdlg.ShowDialog() == true)
            {
                printdlg.PrintVisual(panel.Content as Visual, "MyApplication");
            }
        }

下面是打印预览类功能的示例


我创建了一个纸张大小的矩形(假设为8.5“11”),并将填充设置为
VisualBrush
,这将呈现我的visual
visualToPrint
(在您的示例中为面板)

还将其包装成一个边框以获得类似页面的效果,并将其整体包装成一个
ViewBox
以启用调整大小功能

结果


例如,我选择了一个文本框,你可以在视觉画笔中选择任何你选择的视觉效果,例如
visual=“{Binding ElementName=panel}”

你可以使用视觉画笔。但是视觉画笔是为位图这样的图像设计的。在这种情况下,它将非常有用。没有内置的功能。一个选项是使用RenderTargetBitmap,创建当前主窗口的屏幕截图(图像),并将其显示在控件中。我建议用谷歌搜索不同的选项。