2012-03-02 4 views
13

Я пытаюсь сохранить содержимое NSView в качестве изображения, но сохраняется только изображение, видимое внутри прокрутки.Сохранение содержимого NSView, находящегося внутри NSScrollView

Вот изображение, загруженное в поле зрения: actual image.

Но это, как я могу сохранить изображение: saved image

Есть ли способ, чтобы сохранить все изображения в NSView?

Это, как я спасаю мой NSView подкласс:

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

Этот метод в представлении я хочу сохранить.

+3

Как вы делаете это сейчас? – hamstergene

+0

@hamstergene Я редактировал свой вопрос с кодом, который я сейчас использую для сохранения. Правильно ли это? – Alterecho

ответ

17

Использование -[NSView cacheDisplayInRect:toBitmapImageRep:]

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

Он работает с использованием этих двух методов! Раньше я не знал, как использовать эти методы. Благодаря! – Alterecho

+0

Наконец-то что-то работает. Так много неправильных, частичных или проблемных решений на SO ... – mojuba

Смежные вопросы