¿Por qué es bitmapImageRepForCachingDisplayInRect: la creación de una imagen vacía?

StackOverflow https://stackoverflow.com/questions/1574223

  •  21-09-2019
  •  | 
  •  

Pregunta

Me tiene un poco muy simple de código que se supone que debe capturar el mapa de bits de una vista. Esto funcionaba en Leopard, pero parece terriblemente roto en Snow Leopard.

Este es el código, en respuesta a una pulsación de botón en la ventana:

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

Al hacer clic en el botón para tomar una instantánea sólo resultados en una imagen totalmente transparente.

¿Solo estoy totalmente desorientado aquí, o se rompe este método de creación de caché?

Un proyecto simple - básicamente un proyecto NSDocument arranque, con un botón que llama a este código - se puede encontrar aquí .

¿Fue útil?

Solución

-bitmapImageRepForCachingDisplayInRect: en realidad no captura nada; sólo se genera un mapa de bits en blanco listo para el almacenamiento en caché. Es necesario que -cacheDisplayInRect:toBitmapImageRep: llamada a hacer eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top