2009-10-15 2 views
4

У меня есть очень простой бит кода, который должен захватывать растровое изображение вида. Это использовалось для работы в Leopard, но кажется ужасно разбитым в Snow Leopard.Почему bitmapImageRepForCachingDisplayInRect: создание пустого изображения?

Вот код, в ответ на нажатие кнопки на окне:

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

При нажатии на кнопку, чтобы сделать снимок только приводит к полной прозрачности изображения.

Я просто совершенно незнакомый здесь, или этот метод растрового кэширования сломан?

Простой проект - в основном проект NSDocument стартера с кнопкой, вызывающей этот код, - можно найти here.

ответ

14

-bitmapImageRepForCachingDisplayInRect: фактически не захватывает ничего; он просто генерирует пустой битмап, готовый для кэширования. Для этого вам нужно позвонить -cacheDisplayInRect:toBitmapImageRep:.