4

我有一段非常简单的代码,应该可以捕获视图的位图。这曾经在 Leopard 中有效,但在 Snow Leopard 中似乎非常糟糕。

这是代码,响应窗口上的按钮按下:

- (IBAction)snapshot:(id)sender
{
    NSView* view = [[sender window] contentView];
    NSBitmapImageRep* bitmap
        = [view bitmapImageRepForCachingDisplayInRect:[view bounds]];
    NSData *tiff = [bitmap TIFFRepresentation];
    [tiff writeToFile:[@"~/Desktop/snapshot.tiff" stringByExpandingTildeInPath]
           atomically:YES];
}

单击按钮拍摄快照只会产生完全透明的图像。

我在这里完全一无所知,还是这个位图缓存方法坏了?

一个简单的项目——基本上是一个启动 NSDocument 项目,带有一个调用此代码的按钮——可以在这里找到。

4

1 回答 1

14

-bitmapImageRepForCachingDisplayInRect:实际上并没有捕捉到任何东西;它只是生成一个准备缓存的空白位图。你需要打电话-cacheDisplayInRect:toBitmapImageRep:来做到这一点。

于 2009-10-15T20:06:46.253 回答