gpt4 book ai didi

c# - 打印大型 WPF 用户控件

转载 作者:太空狗 更新时间:2023-10-29 23:36:56 27 4
gpt4 key购买 nike

我有大量数据要使用 WPF 打印。我发现 WPF 提供了一个 PrintDialog.PrintVisual 方法来打印从 Visual 类派生的任何 WPF 控件。

PrintVisual 只会打印一个页面,因此我需要缩放控件以适合页面。不幸的是,这对我不起作用,因为报告有时足够长,以至于在缩放以适合页面时无法轻松阅读。

WPF 提供的另一个打印选项是在 FlowDocument 中创建一个单独的 View 。这可能是打印文档的最佳方式,但它比我希望投入的工作更多,更不用说必须为我希望打印的每个控件维护的额外 View 了。

我在这个 link 中找到了另一个解决方案,但对我来说似乎太复杂了。

有没有更好更简单的解决方案?感谢您的帮助

最佳答案

我假设您的报告显示在 DataGrid 或其他可滚动的内容中?

我相信 FlowDocument 绝对是您的最佳选择,如果您想打印一些看起来(没有更好的词)专业的东西。但是,如果您想要一些快速而肮脏的东西,您可以使用 RenderTargetBitmap.Render 进行一系列操作。基本过程是:

  1. 创建RenderTargetBitmap
  2. ScrollView ,以便在一页上显示要打印的区域
  3. DataGrid 或包含“大”控件的 ScrollViewer 上调用 RenderTargetBitmap.Render
  4. 打印生成的位图
  5. 重复下一个“页面”

同样,不要在“大”控件上调用 RenderTargetBitmap.Render。如果大型控件尚未包含在 ScrollViewer 中,则将其包装起来。那基本上就是你的分页器。

我不知道你是否会对结果满意,但这是我能想到的最简单的方法。看起来您每次都手动点击 PrintScreen。不确定这是否是您想要的,但如果您希望它看起来更好,我认为您需要使用 FlowDocument

关于c# - 打印大型 WPF 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com