Tôi phải thêm khả năng chụp ảnh màn hình cho các ứng dụng OSX của mình, nhưng bản demo của Apple chỉ cho tôi toàn bộ hình ảnh màn hình, tôi chỉ muốn hình ảnh cửa sổ ứng dụng của mình.Chụp ảnh màn hình lập trình trong mac chỉ cho cửa sổ ứng dụng
Mã của tôi là:
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]);
tôi nên thay đổi gì trong mã vì vậy tôi sẽ nhận được cửa sổ duy nhất ứng dụng của tôi không?
Điều này sẽ chỉ ghi lại nội dung của chế độ xem và con cháu của nó; ngay cả khi bạn giải quyết vấn đề này cho chế độ xem nội dung của cửa sổ, nó vẫn sẽ loại trừ khung của cửa sổ. Ngoài ra, bạn có thể bỏ qua việc chuyển đổi sang và từ PDF bằng cách khóa tiêu điểm trên một hình ảnh và gửi một thông báo 'drawRect:' (thường không được bảo đảm, nhưng trong trường hợp này là thích hợp), hoặc bằng cách sử dụng 'bitmapImageRepForCachingDisplayInRect:' và phương thức tương ứng của đại diện hình ảnh đó và thêm đại diện vào một hình ảnh trống. –