0

現在、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];    

前述したように、このコードは非常にうまく機能しますが、小さな問題が 1 つだけあります。NSBox は実際には透過的であるため、デフォルトの白っぽい灰色の背景に慣れているユーザーにとって、画像は非常に奇妙に見えます。

メインの AppDelegate からこれを正常に呼び出していません。これで問題は解決し、NSBox の背後にあるものもキャプチャされますが、うまくいきません。

この NSBox の背後にあるものとその内容をキャプチャする方法を知っている人はいますか?

4

2 に答える 2

0

NSBox の四角形を Windows の観点からキャプチャできますか?

于 2011-11-04T22:31:08.650 に答える
0

非常に効率的ではありませんが、NSBox サブクラスでウィンドウの背景を手動で描画してみてください。

- (void) drawRect:(NSRect)dirtyRect {

    NSDrawWindowBackground(dirtyRect);
    [super drawRect:dirtyRect];
}
于 2011-11-04T22:27:24.227 に答える