4

ビューのビットマップをキャプチャすることになっている非常に単純なコードがあります。これは以前はLeopardで機能していましたが、SnowLeopardではひどく壊れているようです。

ウィンドウのボタンを押すと応答するコードは次のとおりです。

- (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プロジェクト)は、ここにあります。

4

1 に答える 1

14

-bitmapImageRepForCachingDisplayInRect:実際には何もキャプチャしません。キャッシュの準備ができた空白のビットマップを生成するだけです。あなたはそれをするために電話する必要があります-cacheDisplayInRect:toBitmapImageRep:

于 2009-10-15T20:06:46.253 に答える