我目前正在尝试将我的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背后的任何内容及其内容?
答案 0 :(得分:0)
虽然效率不高,但您可以尝试在NSBox子类中手动绘制窗口的背景:
- (void) drawRect:(NSRect)dirtyRect {
NSDrawWindowBackground(dirtyRect);
[super drawRect:dirtyRect];
}
答案 1 :(得分:0)
你能捕捉到NSBox的矩形,但是从windows的角度来看?