我正在构建一个OSX应用程序,并希望使用与cmd-shift-4 UX类似的界面捕获屏幕的一部分,IE启动操作:
我在http://code.google.com/p/captureme/中找到了一个很好的起点,它提供了一个NSPanel并捕获了面板内的区域。但是我想做得更好并模拟cmd-shift-4接口。
我无法找到这样的内容(或者是否存在现有解决方案)。我想直接的方法是使用NSResponder并替换mouseDown上的光标,然后在鼠标拖动事件上绘制mouseDown点和当前光标位置之间的半透明矩形。如果我的想法是正确的,请告诉我。
谢谢!
答案 0 :(得分:4)
以下是您想要做的简单版本:在CGShieldingWindowLevel(),setIgnoresMouseEvents:NO
创建一个全屏透明窗口,让视图将光标设置为您想要的任何内容,并实现拖动以绘制其中的选取框被拖拽的区域。
答案 1 :(得分:4)
您可以使用screencapture
命令行工具。
这会将您的屏幕截图放到粘贴板上:
NSTask* task = [[NSTask alloc] init];
[task setArguments: [NSArray arrayWithObject: @"-ic"]];
[task setLaunchPath: @"/usr/sbin/screencapture"];
[task launch];
[task waitUntilExit];
[task release];
NSData* data = [[NSPasteboard generalPasteboard] dataForType: NSPasteboardTypePNG];
此外,您可以设置任务以将屏幕截图直接保存到文件中:
[task setArguments: [NSArray arrayWithObjects: @"-i", filePath, nil]];