在Cocoa下开发屏幕捕获程序时遇到的问题

时间:2011-12-21 14:51:57

标签: macos cocoa layout coordinates

我正在Mac OS下开发一个简单的屏幕捕获程序,我将主窗口设置为透明,并使用主窗口中包含的NSBox实例来指定要捕获的区域,这里是重要的代码和主界面我的节目(对不起,公众形象没有声誉):

capturedImage = CGDisplayCreateImage( kCGDirectMainDisplay );//capture the whole screen

NSRect boxRect = [mBox borderRect];//mBox is an instance of NSBox, lies in main window

capturedImage = CGImageCreateWithImageInRect(capturedImage, boxRect);//obtain an image specified by mBox

我无法获得正确的图像,我知道坐标可能有问题,但我无法弄明白,有人可以帮助我吗? 另外一个,主窗口上有3个按钮,我希望它们固定在主窗口的右下方,因为我拖动并调整主窗口的大小,但我不知道Interface Builder的布局架构,有什么好的解决方案?更好的是带有评论的实用有用代码。非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要read up about coordinate systems.您的NSBox实例是一个视图,并且要求其borderRect将返回窗口坐标中的矩形。

您需要将矩形放在屏幕坐标系中,因为整个屏幕图像使用该坐标系。您可以使用此方法转换rect:

NSRect screenBoxRect = [[mBox window] convertRectToScreen:[mBox frame]];