2012-03-02 13 views
13

NSViewのコンテンツをイメージとして保存しようとしていますが、スクロールビュー内に表示されているイメージのみが保存されます。NSScrollView内のNSViewコンテンツ全体を保存する

ビューにロードされた実際の画像は、 actual imageです。

しかし、これは、私は、画像を保存することができるよ方法です: saved image

はNSViewの全体画像を保存する方法はありますか?

これは私が私のNSViewのサブクラスを保存しています方法です:

- (void)save 
{ 
    [self lockFocus]; 
    NSBitmapImageRep* rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:[self bounds]]; 
    [self unlockFocus]; 

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

    NSString* string = NSHomeDirectory(); 
    NSString* pth1 = [string stringByAppendingPathComponent:@"ttx.png"]; 

    [data writeToFile:pth1 atomically:YES]; 
} 

この方法は私が保存したいビューです。

+3

どのようにあなたは今それをやっていますか? – hamstergene

+0

@hamstergene私は現在保存しているコードで質問を編集しました。それは正しい方法ですか? – Alterecho

答えて

17

使用-[NSView cacheDisplayInRect:toBitmapImageRep:]

NSBitmapImageRep* rep = [self bitmapImageRepForCachingDisplayInRect:self.bounds]; 
[self cacheDisplayInRect:self.bounds toBitmapImageRep:rep]; 
+0

これは2つの方法で動作します!私は前にこれらの方法を使う方法を知らなかった。ありがとう! – Alterecho

+0

最後に動作するもの。非常に多くの間違った、部分的な、または問題のある解決策... – mojuba

関連する問題