从NSView中制作NSImage

时间:2015-04-20 15:54:42

标签: cocoa nsview nsimage

我知道如何创建描述NSImage及其所有子视图的NSView,但我所追求的是视图的NSImage 忽略它的子视图。我可以想到用NSView的子类做这个的方法,但是如果可能的话,我很想避免使用子类化。有没有人有任何想法?

2 个答案:

答案 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副本并拍摄快照。