2013-10-09 40 views
1

我有一個混合模式項目C#(WPF) - > C++/Cli - >非託管C++。如何處理混合模式項目中的打印?

圖形在C++中處理。有些東西被繪製,然後通過C++/cli接口對象傳遞給c#。在c#中,此接口放置在xaml表單中並顯示。

現在我需要將此圖片發送到printpreview然後發送到打印機。

怎麼可能做到?

我想過序列化,但找不到任何有關序列化C++/cli接口的信息。

任何想法?謝謝!

編輯 好的,所以我必須進一步解釋。

在我的C#項目,我有一個C++/CLI對象,通過它我可以以我的顯卡在C++溝通,這個對象有許多方法,如f.ex:

object.DrawLine 
object.DrawSmthElse 
object.UpdateImage 

等等等等。

所以,當我在WPF中展示一個xaml表單時,通過這個對象來填充這個表單,就像我調用所有這些方法來繪製所有我需要的東西。

現在的問題是:我需要發送到打印機完全這個圖形部分(這是在c + +中完成)。我應該以什麼形式做?例如,如何將此對象傳遞給c#中的DocumentViewer?

我希望這足以將問題擱置。

回答

2

嘗試將位圖的原始字節發送到託管代碼和非託管代碼。

在託管端,您可以創建一個位圖對象with a Stream。您還可以保存現有的位圖out to a stream。您可以使用MemoryStream輕鬆讀取和寫入C/CLI對象中託管和非託管代碼的字節。

-

如果圖像已經在託管方(我不知道,如果它是與否),那麼你可以使用PrintPreviewDialog上和PrintDialog類(example

+0

感謝您的建議!也許我不明白smth的結果,但我沒有一個位圖,而是一個複雜的接口對象與一些公共方法,我可以通過它從c#與非託管代碼進行通信。在這種情況下,把它放到一個MemoryStream我將不得不再次處理序列化?或者我錯了? –