我有一个非常简单的代码,用于捕获视图的位图。这曾经在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项目,带有一个调用此代码的按钮 - 可以找到here。
答案 0 :(得分:14)
-bitmapImageRepForCachingDisplayInRect:
实际上没有抓住任何东西;它只是生成一个准备好缓存的空白位图。您需要致电-cacheDisplayInRect:toBitmapImageRep:
来执行此操作。