Ich muss die Möglichkeit hinzufügen, Screenshots zu meinen OSX-Anwendungen zu machen, aber die Apple-Demo gibt mir nur das ganze Bild, ich möchte nur nur meine Anwendung Fensterbild.Screenshot programmatisch in Mac nur für das Anwendungsfenster
Mein Code ist:
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]);
Was soll ich in Code ändern, so werde ich nur Fenster meiner App bekommen?
Dies wird nur den Inhalt einer Ansicht und ihrer Nachkommen erfassen; Selbst wenn Sie dies in der Inhaltsansicht des Fensters ansprechen, wird der Rahmen des Fensters trotzdem ausgeschlossen. Außerdem können Sie die Konvertierung von und zu PDF überspringen, indem Sie den Fokus auf ein Bild fixieren und der Ansicht eine 'drawRect:' - Nachricht senden (was normalerweise nicht gerechtfertigt ist, aber in diesem Fall angemessen ist) oder 'bitmapImageRepForCachingDisplayInRect:' und verwenden die entsprechende Methode dieses Bild rep und Hinzufügen der rep zu einem leeren Bild. –