我正在尝试截取视图的屏幕截图。
我正在使用以下链接中的代码,该代码运行良好,但有一个例外:
我遇到的问题是,如果我将应用程序窗口拖到我的第二台显示器上,屏幕捕获会抓取错误的矩形。本质上,矩形已垂直移位,或者可能使用左上角而不是左下角的原点。
奇怪的是,该应用程序在启动监视器上运行良好,但是当我将它拖到第二个监视器(没有关闭并重新启动应用程序)时,矩形捕获出错了。如果我将应用程序拖回启动监视器,一切都会重新开始工作。
主显示器和辅助显示器具有不同的分辨率。
转换rect的代码如下:
NSRect originRect = [aView convertRect:[aView bounds] toView:[[aView window] contentView]];
NSRect rect = originRect;
rect.origin.y = 0;
rect.origin.x += [aView window].frame.origin.x;
rect.origin.y += [[aView window] screen].frame.size.height - [aView window].frame.origin.y - [aView window].frame.size.height;
rect.origin.y += [aView window].frame.size.height - originRect.origin.y - originRect.size.height;
有谁知道为什么这在启动监视器上计算正确,但在辅助监视器上计算错误?
问题一定与不同的分辨率有关,但我不明白为什么调用 convertRect:toView (或后续计算)不起作用。
顺便说一句,我正在 10.8.4 上开发这个并针对 10.7。
谢谢
达伦。