首页 > 解决方案 > CanvasVirtualControl 可以用作 UWP PrintDocument 的 UIElement 吗?

问题描述

在尝试使用 CanvasVirtualControl 作为源从 UWP 应用程序(在 C++/winrt 中)打印时,打印 UI 看起来很好,但预览为空白。

printrequest 似乎有效,并且调用了 Paginate 等事件。

对于这个测试,我已经存储了绘图出现的 CanvasVirtualControl。该控件用作 ScrollViewer 的内容。数组 m_print_preview_pages 被定义为 UIElements 的 std::vector。我响应 PrintDocument 的事件 SetPreviewPage,使用

m_print_document.SetPreviewPage(args.PageNumber(), m_print_preview_pages[args.PageNumber()-1]);

VS输出报错,

0x80040155 Failed to find proxy registration for IID: ...

在继续之前,我想知道这是否是一口干井。UWP 打印示例不使用 CanvasVirtualControl。这不可能吗?我不清楚 CanvasVirtualControl 是 PrintDocument 源所需的 UIElement 。

感谢您对此的任何建议。

标签: c++-winrtwin2d

解决方案


答案是:不。看来,如果您的 UWP 应用正在打印 CanvasControl 或 CanvasVirtualControl 的内容,则 UWP 打印示例不是适当的指导;Print-From-Your-UWP-App 文档也不是。您需要为 PrintManager 提供 CanvasPrintDocument,并且它没有 Paginate 等事件。如果有人可以指出更完整的文档,将受到欢迎;与此同时,我正在努力。Microsoft.Graphics.Canvas.Printing 命名空间的文档是一个起点。


推荐阅读