我知道如何创建描述NSImage
及其所有子视图的NSView
,但我所追求的是视图的NSImage
忽略它的子视图。我可以想到用NSView
的子类做这个的方法,但是如果可能的话,我很想避免使用子类化。有没有人有任何想法?
答案 0 :(得分:1)
隐藏子视图,抓取图片,取消隐藏子视图:
NSMutableArray* hiddenViews = [[NSMutableArray] alloc init];
for (NSView* subview in [self subviews]) {
if (subview hidden) [hiddenViews addObject: subview];
else [subview setHidden:YES];
}
NSSize imgSize = self.bounds.size;
NSBitmapImageRep * bir = [self bitmapImageRepForCachingDisplayInRect:[self bounds]];
[bir setSize:imgSize];
[self cacheDisplayInRect:[self bounds] toBitmapImageRep:bir];
NSImage* image = [[NSImage alloc] initWithSize:imgSize];
[image addRepresentation:bir];
for (NSView* subview in [self subviews]) {
if (![hiddenViews containsObject: subview])
[subview setHidden:NO];
}
答案 1 :(得分:0)
我建议在屏幕外制作所需的NSView副本并拍摄快照。