0

monomac で印刷するにはどうすればよいですか? これは私が得ることができる限りですが、NSView のグラフィック コンテキストへの参照を取得できないようです。コントロールを PrintDoc に追加しても問題ありませんが、描画したいと思います。

//Print Function
void Print(){
    PrintDoc NewDoc = new PrintDoc ();
    NewDoc.SetFrameSize(new SizeF(600,1000));
    NSPrintOperation P = NSPrintOperation.FromView (NewDoc);
    P.RunOperation ();
}

//NSView to be printed
class PrintDoc:NSView
{
    public PrintDoc ()
    {
    }
    public override void DrawRect (System.Drawing.RectangleF dirtyRect)
    {
        //NSPrintOperation.CurrentOperation.Context !! this is null
        //NSGraphicsContext.CurrentContext !! this hangs
    }
}
4

1 に答える 1

0

NSGraphicsContext.CurrentContext を使用する代わりに、コンテキストを手動で取得することで、なんとか機能させることができました。

https://github.com/picoe/Eto/blob/feature/printing/Source/Eto.Platform.Mac/Forms/Printing/PrintDocumentHandler.cs#L39

スニペット:

static IntPtr selCurrentContext = Selector.GetHandle ("currentContext");
static IntPtr classNSGraphicsContext = Class.GetHandle ("NSGraphicsContext");

public override void DrawRect (System.Drawing.RectangleF dirtyRect)
{
    var operation = NSPrintOperation.CurrentOperation;

    var context = new NSGraphicsContext(Messaging.IntPtr_objc_msgSend (classNSGraphicsContext, selCurrentContext));
    // this causes monomac to hang for some reason:
    //var context = NSGraphicsContext.CurrentContext;
}
于 2012-11-17T17:54:20.683 に答える