2012-03-02 24 views
13

içindeki NSView içeriklerini kaydetme Bir NSView içeriğini görüntü olarak kaydetmeye çalışıyorum, ancak yalnızca kaydırma görünümünde görünen görüntü kaydedilir.NSScrollView

Görüntüde yüklenen gerçek görüntü şu şekildedir: actual image. saved image

NSView görüntünün tamamını kaydetmek için herhangi bir yolu var mı:

Ama bu görüntü kaydetmek mümkün değilim nasıl?

- (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]; 
} 

Bu yöntem ı kaydetmek istediğiniz görünümünde geçerli: Benim NSView alt sınıfı saklıyorum nasıl

budur.

+3

Şimdi nasıl yapıyorsun? – hamstergene

+0

@hamstergene Soruyu şu anda kaydetmek için kullandığım kodla düzenledim. Doğru yol mu? – Alterecho

cevap

17

Kullanım -[NSView cacheDisplayInRect:toBitmapImageRep:]

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

Bu iki yöntemi kullanarak çalışır! Bu yöntemleri daha önce nasıl kullanacağımı bilmiyordum. Teşekkürler! – Alterecho

+0

Sonunda işe yarayan bir şey. SO üzerinde çok yanlış, kısmi veya sorunlu çözümler ... – mojuba