2009-10-15 6 views
4

J'ai un bit de code très simple qui est censé capturer le bitmap d'une vue. Cela a l'habitude de travailler dans Leopard, mais semble horriblement brisé dans Snow Leopard.Pourquoi bitmapImageRepForCachingDisplayInRect: créer une image vide?

Voici le code, en réponse à un bouton pression sur la fenêtre:

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

En cliquant sur le bouton pour prendre un instantané juste dans une résultats image entièrement transparente.

Suis-je complètement complètement désolé ici, ou est-ce que cette méthode de mise en cache bitmap est cassée?

Un projet simple - essentiellement un projet NSDocument de démarrage, avec un bouton qui appelle ce code - peut être trouvé here.

Répondre

14

-bitmapImageRepForCachingDisplayInRect: ne capture réellement rien; il génère juste un bitmap vierge prêt pour la mise en cache. Vous devez appeler -cacheDisplayInRect:toBitmapImageRep: pour le faire.

Questions connexes