2012-03-02 14 views
13

Estoy tratando de guardar el contenido de un NSView como una imagen, pero solo se guarda la imagen visible dentro de la vista de desplazamiento.Guardando todo el contenido de NSView, que está dentro de un NSScrollView

Aquí está la imagen real cargada en la vista: actual image.

Pero esta es la forma en que soy capaz de guardar la imagen: saved image

¿Hay alguna manera de salvar a toda la imagen en el NSView?

Esta es la forma en que estoy ahorrando mi NSView subclase:

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

Este método se encuentra en la vista que desea guardar.

+3

¿Cómo estás ahora? – hamstergene

+0

@hamstergene He editado mi pregunta con el código que estoy usando actualmente para guardar. ¿Es el camino correcto? – Alterecho

Respuesta

17

Uso -[NSView cacheDisplayInRect:toBitmapImageRep:]

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

¡Funciona con estos dos métodos! No sabía cómo usar estos métodos antes. ¡Gracias! – Alterecho

+0

Finalmente algo que funciona. Tantas soluciones equivocadas, parciales o problemáticas en SO ... – mojuba

Cuestiones relacionadas