c# - 打印缩放我的 WPF-GroupBox

标签 c# wpf printing groupbox

我正在尝试从我的 wpf 应用程序打印出一些信息。我找到了一些代码来使我想要打印的内容适合一页,而且效果很好。问题是,在我打印我想要的内容之后,该方法缩小了我的 wpf-control,它是一个带有图表的组框。如何将组框的大小缩放回缩放前的大小?

private void PrintUT_Click(object sender, RoutedEventArgs e)
    {
        PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
        if (printDlg.ShowDialog() == true)
        {
            //get selected printer capabilities
            System.Printing.PrintCapabilities capabilities = printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket);

            //get scale of the print wrt to screen of WPF visual
            double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth / this.GBProsjektTimer.ActualWidth, capabilities.PageImageableArea.ExtentHeight /
                           this.GBProsjektTimer.ActualHeight);

            //Transform the Visual to scale
            this.GBProsjektTimer.LayoutTransform = new ScaleTransform(scale, scale);

            //get the size of the printer page
            Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);

            //update the layout of the visual to the printer page size.
            this.Measure(sz);
            this.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));

            //now print the visual to printer to fit on the one page.
            printDlg.PrintVisual(this.GBProsjektTimer, "First Fit to Page WPF Print");
        }
    }

最佳答案

找到答案了!只需将 objecToPrint 替换为您的对象即可。在我的例子中是 this.GBProsjektTimer.Width = double.Nan

                    objectToPrint.Width = double.NaN;
                objectToPrint.UpdateLayout();
                objectToPrint.LayoutTransform = new ScaleTransform(1, 1);
                Size size = new Size(capabilities.PageImageableArea.ExtentWidth, 
                                     capabilities.PageImageableArea.ExtentHeight);
                objectToPrint.Measure(size);
                objectToPrint.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, 
                                      capabilities.PageImageableArea.OriginHeight), size));

关于c# - 打印缩放我的 WPF-GroupBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833537/

相关文章:

c# - 进度条线程在执行后不会中止,应用程序崩溃-WPF

c# - 为什么需要安装向导?我如何创建一个?

.net - 如何折叠段落?

java - 打印出了什么问题,它停在某个地方,无法加载打印

c# - 生产者消费者在 C# 中使用 AutoReset 事件

c# - 如何只打印一个特定的面板 ID

c# - Elmah 不过滤/拦截 web api 上的错误

c# - 线程专有数据 : how to store and access?

java - 如何在java中按列打印出来

php - 创建一个按钮以允许用户将页面另存为文件?