我將一個C#.NET應用程序移植到Mono .NET以便在OSX中執行。部分應用涉及打印圖像。在.NET中相當容易,主要歸結於PrintDocument的PrintPage事件中的如何使用GTKSharp打印圖像
e.Graphics.DrawImage(img, new Rectangle(x, y, printSize.Width, printSize.Height));
。 Mono沒有完全實現System.Drawing.Printing,所以看起來最好的方法是使用GtkSharp。我在網上找到了一些關於如何使用Gtk.PrintOperation打印文本的例子。 PrintOperation有一個事件DrawPage,它應該與PrintPage類似,但是我只能找到如何使用PangoSharp在這個事件中打印文本。
足夠解釋我所知道的,我認爲這個問題是相當直接的。我希望有人能夠提供幫助,因爲GtkSharp的印刷記錄不完善。如果在GtkSharp之外有更好的方法來做到這一點,我就會全神貫注。
非常感謝。
編輯
所以我設法得到的東西打印,然而,它始終是一個空白頁。下面是代碼:
var print = new PrintOperation();
print.BeginPrint += (obj, args) => { print.NPages = 1; };
print.DrawPage += (obj, args) => {
PrintContext context = args.Context;
Cairo.Context cr = context.CairoContext;
var imageSurface = new Cairo.ImageSurface(printImage.FileName);
cr.MaskSurface(imageSurface, 0, 0);
};
print.EndPrint += (obj, args) => { };
print.Run(PrintOperationAction.Print, null);
謝謝。直到我發現需要使用Gtk.Application.Invoke在主線程上調用它之前,我一直在解決這個問題。這不適用於PNG圖像旁邊的任何圖像,這就是爲什麼我猶豫是否將其標記爲正確的答案。我需要一個適用於所有圖像類型的解決方案。 – 2012-03-04 00:30:37
你能否看看我的問題,類似於這個http://stackoverflow.com/questions/12873640/how-to-print-plain-text-using-monodevelop-and-c – 2012-10-17 08:40:20