Захват NSBox Подкласс в PNG - PullRequest
0 голосов
/ 05 ноября 2011

В настоящее время я пытаюсь записать содержимое моего подкласса NSBox в файл PNG.Я нашел некоторый код, который, кажется, отлично справляется с задачей (код, который я вызываю из моего фактического подкласса):

[self lockFocus];

NSBitmapImageRep *rep = [self bitmapImageRepForCachingDisplayInRect:[self bounds]];

[self cacheDisplayInRect:[self bounds] toBitmapImageRep:rep];

[self unlockFocus];

NSData *imageData = [rep representationUsingType:NSPNGFileType properties:nil];

[imageData writeToFile:@"~/Desktop/test.png" atomically:NO];    

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

Я не удачно вызвал это из своего основного AppDelegate.Это должно решить проблему, захватывая то, что стоит за NSBox, но это не работает для меня.

Кто-нибудь знает, как захватить что-нибудь за этим NSBox, а также его содержимое?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2011

Не могли бы вы захватить прямоугольник NSBox, но с точки зрения окон?

0 голосов
/ 05 ноября 2011

Хотя это и не суперэффективно, вы можете попробовать нарисовать фон окна вручную в подклассе NSBox:

- (void) drawRect:(NSRect)dirtyRect {

    NSDrawWindowBackground(dirtyRect);
    [super drawRect:dirtyRect];
}
...