2009-10-15 64 views
4

我有一個非常簡單的代碼應該捕捉視圖的位圖。這曾經在Leopard中工作,但在雪豹中似乎非常可怕。爲什麼bitmapImageRepForCachingDisplayInRect:創建一個空的圖像?

下面是代碼,響應於按鈕按壓在窗口上:

- (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

回答

14

-bitmapImageRepForCachingDisplayInRect:實際上並沒有捕獲任何東西;它只是生成一個空白位圖準備緩存。你需要撥打-cacheDisplayInRect:toBitmapImageRep:來做到這一點。

相關問題