3

最初,我使用自定义 NSView 创建了一个简单的程序。我画了一张照片(证书)并打印出来了!美丽的!一切都很好!

然后,我将自定义 NSView 移动到现有应用程序。我希望当用户点击打印时,它会打印此证书。很简单。我想我的控制器代码中可能有一个 NSView 指针。然后在初始化时我会填充指针。然后当有人想打印证书时,它会打印。问题是我所有的绘图代码都在“drawRect”方法中。不会调用此方法,因为此视图永远不会显示在窗口中。

我听说其他人使用不可见的 NSView 对象只是为了打印。我需要做什么?我真的不想在屏幕上显示这个视图。

罗杰

4

1 回答 1

2

您不必提前创建视图,您可以在需要时创建它。

如果您有基于文档的应用程序和要转储到打印机的视图,那么在我们的MyDocument(或您所称的)扩展中,NSDocument您将实现:

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e

然后视图使用标准drawRect:进行绘图。

例如,这里PeopleView只画了一个table人的细节,这里需要一个NSDictonaryemployees

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e
{
    PeopleView * view = [[PeopleView alloc] initWithPeople:employees];
    NSPrintInfo * printInfo = [self printInfo];
    NSPrintOperation * printOp
        = [NSPrintOperation printOperationWithView:view
                                         printInfo:printInfo];
    [view release];
    return printOp;
}

您可以在 Hillegass 的 Cocoa Programming For Mac OS X 中的第 27 章“打印”中查找更多详细信息。

于 2010-03-13T14:10:46.427 回答