如何处理混合模式项目中的打印

本文关键字:项目 模式 打印 混合 何处理 处理 | 更新日期: 2023-09-27 18:34:28

我有一个混合模式项目 C#(WPF( -> C++/Cli ->非托管C++。

图形在 c++ 中处理。绘制一些内容,然后通过 c++/cli 接口对象传输到 c#。在 c# 中,此接口放在 xaml 窗体上并显示。

现在我需要将此图片发送到打印预览,然后发送到打印机。

怎么可能呢?

我想过序列化,但找不到任何关于序列化 c++/cli 接口的信息。

有什么想法吗?谢谢!

编辑好的,所以我必须进一步解释。

在我的 c# 项目中,我有一个 c++/cli 对象,通过它我可以在 c++ 中与我的图形进行通信,并且这个对象有很多方法,例如 f.ex:

object.DrawLine
object.DrawSmthElse
object.UpdateImage

等等。

因此,当我在 WPF 中显示 xaml 窗体时,此窗体的填充是通过此对象进行的,就像我调用所有这些方法来绘制我需要的所有内容一样。

现在的问题是:我需要准确地将这个图形部分发送到打印机(这是用 c++ 完成的(。我应该以什么形式去做?例如,如何将此对象传递给 c# 中的文档查看器?

我希望这足以搁置这个问题。

如何处理混合模式项目中的打印

尝试将位图的原始字节发送到托管代码和非托管代码。

在托管端,可以使用 Stream 创建位图对象。 还可以将现有位图保存到流中。 您可以使用 MemoryStream 轻松地在 C++/CLI 对象中的托管和非托管代码中读取和写入字节。

--

如果图像已经在托管端(我无法判断它是否在(,那么您可以使用 PrintPreviewDialog 和 PrintDialog(示例(