【发布时间】:2011-12-18 07:14:15
【问题描述】:
我从事的一个项目有一些预先存在的报告,这些报告通过 MFC 的打印支持打印,并通过 GDI 或多或少地直接呈现到打印机 DC。我们已经开始通过 WPF/XAML 做一些新的(不相关的)报告,因为无论如何我们都在将新的 UI 转换为 WPF,并且使用它进行布局要好得多。
另一只鞋终于掉了,我需要在现有的打印报告中添加一些新功能,而新功能实际上需要使用 WPF 来实现。我们现有的 WPF 报告是通过通过 XpsDocumentWriter 发送到 XpsDocument(内存中,而不是磁盘上)的 XAML 页面实现的。我希望能够继续使用这种策略,并采取编写 WPF/XAML 报告的方法,这些报告恰好有一些通过 GDI 呈现的页面。
我第一次天真的尝试是在 XpsDocumentWriter 中呈现的 UIElement 中嵌入 HwndHost,但这似乎不起作用。不足为奇,但值得一试。
下一个明显的解决方案是 IMO,将 GDI 图形渲染为适当大小和缩放的位图,并将该位图渲染到 XpsDocument 中的页面。这可行,但页面大小的位图(尤其是内存中的位图)似乎是导致内存使用率高且速度较慢的计算机性能不佳的原因。
理想情况下,我希望将 GDI 内容呈现为元文件或其他可以转换为 XPS 的矢量格式。但这必须是一个每次都有效的自动过程,因为它只是一个文档打印功能。 OTOH 它是内部用户的应用程序,因此我们可以忍受一些性能下降
WPF 开发不是我的主要任务,因此我将自己描述为对底层细节没有太多详细了解的新手。我只是想确保在我恢复使用位图作为传输媒介之前没有遗漏一些明显的东西,尽管到目前为止我还没有在我的搜索中找到任何其他合适的选项。
有什么我应该调查的吗?
【问题讨论】: