Cocoa 为什么bitmapImageRepForCachingDisplayInRect:创建空图像?
我有一段非常简单的代码,用来捕获视图的位图。这曾经在Leopard中起作用,但在SnowLeopard中似乎坏得可怕 以下是对按下窗口上的按钮作出响应的代码:Cocoa 为什么bitmapImageRepForCachingDisplayInRect:创建空图像?,cocoa,nsview,nsbitmapimagerep,Cocoa,Nsview,Nsbitmapimagerep,我有一段非常简单的代码,用来捕获视图的位图。这曾经在Leopard中起作用,但在SnowLeopard中似乎坏得可怕 以下是对按下窗口上的按钮作出响应的代码: - (IBAction)snapshot:(id)sender { NSView* view = [[sender window] contentView]; NSBitmapImageRep* bitmap = [view bitmapImageRepForCachingDisplayInRect:[vi
- (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];
}
单击按钮拍摄快照只会生成完全透明的图像
我是完全不懂,还是位图缓存方法被破坏了
可以找到一个简单的项目—基本上是一个starter NSDocument项目,带有调用此代码的按钮。
-bitmapImageRepForCachingDisplayInRect:
实际上没有捕获任何内容;它只是生成一个空白位图,准备缓存。您需要调用-cacheDisplayInRect:toBitmapImageRep:
来执行此操作。如果存在高分辨率图像(即2536x 1200),则cacheDisplay将忽略图像视图