将NSBox子类捕获到PNG

时间:2011-11-04 21:16:38

标签: objective-c capture nsbox

我目前正在尝试将我的NSBox子类的内容捕获到PNG文件中。我发现一些代码看起来很完美(我从实际的子类调用的代码):

[self lockFocus];

NSBitmapImageRep *rep = [self bitmapImageRepForCachingDisplayInRect:[self bounds]];

[self cacheDisplayInRect:[self bounds] toBitmapImageRep:rep];

[self unlockFocus];

NSData *imageData = [rep representationUsingType:NSPNGFileType properties:nil];

[imageData writeToFile:@"~/Desktop/test.png" atomically:NO];    

正如我所说,该代码运行良好,但只有一个小问题:NSBox实际上是透明的,因此用户看起来非常奇怪,他曾经有过默认的灰白色背景。

我没有从我的主AppDelegate成功地调用它。这应该解决问题,捕获NSBox背后的内容,但它对我不起作用。

有谁知道如何捕获此NSBox背后的任何内容及其内容?

2 个答案:

答案 0 :(得分:0)

虽然效率不高,但您可以尝试在NSBox子类中手动绘制窗口的背景:

- (void) drawRect:(NSRect)dirtyRect {

    NSDrawWindowBackground(dirtyRect);
    [super drawRect:dirtyRect];
}

答案 1 :(得分:0)

你能捕捉到NSBox的矩形,但是从windows的角度来看?