Я пытаюсь получить скриншот из NSView, нарисовать строку поверх скриншота, используя буфер NSImage, а затем сохранить все. Представление, полученное из, представляет собой простое представление содержимого NSPanel, в котором размещается один NSImageView.
К сожалению, выходной файл - моя строка на черном фоне без каких-либо признаков скриншота.
Это код:
NSImage *screenshot = [[NSImage alloc] initWithData:[mView dataWithPDFInsideRect:[mView bounds]]];
NSString *frameCounterString = @"123";
[screenshot lockFocus];
[frameCounterString drawAtPoint:NSMakePoint(10, 10) withAttributes:nil];
[screenshot unlockFocus];
Есть идеи, что происходит?
Запись изображения напрямую, т. Е. Отсутствие рисования строк дает ожидаемый результат (= скриншот в файле).
Как только вызовы lockFocus / unlockFocus добавляются, результат становится черным.
Использование NSBitmapImageRep: initWithFocusedViewRect: методика захвата также не работает в этом случае, т. Е .:
screenshot = [[NSImage alloc] initWithSize:[mView bounds].size];
[mView lockFocus];
NSBitmapImageRep *bits = [[NSBitmapImageRep alloc] initWithFocusedViewRect:[mView bounds]];
[mView unlockFocus];
[screenshot addRepresentation:bits];