2011-11-04 51 views
0

我正在嘗試將我的NSBox子類的內容捕獲到PNG文件中。我發現一些代碼,似乎這樣的伎倆完美(代碼,我從我的實際子類調用):將NSBox子類捕獲到PNG

[self lockFocus]; 

NSBitmapImageRep *rep = [self bitmapImageRepForCachingDisplayInRect:[self bounds]]; 

[self cacheDisplayInRect:[self bounds] toBitmapImageRep:rep]; 

[self unlockFocus]; 

NSData *imageData = [rep representationUsingType:NSPNGFileType properties:nil]; 

[imageData writeToFile:@"~/Desktop/test.png" atomically:NO];  

正如我所說,該代碼工作得很好,但只有一個小問題:NSBox實際上是透明的,所以圖像看起來對於用戶來說很陌生,用戶習慣於擁有默認的白色背景。

我還沒有成功從我的主AppDelegate調用這個。這應該可以解決問題,捕捉NSBox背後的內容,但它不適合我。

有誰知道如何捕捉這個NSBox背後的東西以及它的內容?

回答

0

雖然不是超高效,你可以嘗試手工繪製窗口的背景在NSBox子類:

- (void) drawRect:(NSRect)dirtyRect { 

    NSDrawWindowBackground(dirtyRect); 
    [super drawRect:dirtyRect]; 
} 
+0

正是我需要的,謝謝! – elliottbolzan

0

你能捕捉NSBox的,但是從窗戶角度矩形?

+0

這就是我想要的,但我不知道如何從我的NSWindow主引用NSView。 – elliottbolzan