Создание скриншота программно в mac только для окна приложения
Я должен добавить возможность делать скриншоты в Мои приложения OSX, но демонстрация Apple дает мне только изображение всего экрана, я просто хочу только изображение окна моего приложения.
мой код:
NSInteger displaysIndex = 0;
if(displays != nil)
{
free(displays);
}
CGError err = CGDisplayNoErr;
CGDisplayCount dspCount = 0;
/* How many active displays do we have? */
err = CGGetActiveDisplayList(0, NULL, &dspCount);
/* If we are getting an error here then their won't be much to display. */
if(err != CGDisplayNoErr)
{
return;
}
/* Allocate enough memory to hold all the display IDs we have. */
displays = calloc((size_t)dspCount, sizeof(CGDirectDisplayID));
// Get the list of active displays
err = CGGetActiveDisplayList(dspCount,
displays,
&dspCount);
/* Make a snapshot image of the current display. */
CGImageRef image = CGDisplayCreateImage(displays[displaysIndex]);
что я должен изменить в коде, чтобы получить только окно моего приложения?
2 ответов
простой.
NSImage *captureImage = [[NSImage alloc] initWithData:[self.view dataWithPDFInsideRect:[self.view bounds]]];
пожалуйста, проверьте и дайте мне знать. Это захваченное текущее активное окно.
чтобы на самом деле сделать снимок экрана Вашего окна, включая его рамку и тень, получите windowNumber
и передать его в на CGWindowListCreateImage
функции.