可可 - 屏幕截图和绘图(视网膜)

时间:2015-02-25 10:45:42

标签: objective-c image cocoa screen-capture retina

我尝试从视网膜显示器获取屏幕截图,并在窗口上绘制此图像。

我可以获得捕获

CGDirectDisplayID displayId = CGMainDisplayID()
CGImage imageRef = CGDisplayCreateImage(displayId)

图片尺寸为2560x1600

现在,我需要在窗口上绘制此图像。但如果,我将窗口调整为全屏,窗口返回大小1280x800。如果我不在窗口上绘制图像,我需要将比例图像设置为1280x800。图像质量下降,这不好。

请帮助我,我如何从视网膜显示器上获取屏幕并在窗口上绘制,而不会丢失质量?

2 个答案:

答案 0 :(得分:0)

您可以通过将其框架传递给此方法来查找实际窗口大小(以像素为单位):

-[NSWindow convertRectToBacking:]

答案 1 :(得分:0)

只需将图像绘制到视图的边界即可。理论上这是一个缩放操作,但实际上并不是因为视图的边界是点,而不是像素。视图的后备缓冲区与原始屏幕捕获的DPI相同,因此它将是一个直接的blit。没有细节会丢失。