【问题标题】:How to emulate the cmd-shift-4 screen capture interface?如何模拟 cmd-shift-4 截屏界面?
【发布时间】:2011-09-11 10:32:25
【问题描述】:

我正在构建一个 OSX 应用程序,并希望使用与 cmd-shift-4 UX 类似的界面捕获屏幕的一部分,IE 启动操作:

  1. 显示鼠标光标
  2. mouseDown 并拖动,mouseUp 捕获屏幕坐标,同时绘制半透明覆盖以表示正在捕获的区域

我在http://code.google.com/p/captureme/ 中找到了一个很好的起点,它提供了一个 NSPanel 并捕获了面板内的区域。不过我想做得更好一点并模拟 cmd-shift-4 界面。

我找不到这样的东西是否内置(或者是否有现有的解决方案)。我想直接的方法是使用 NSResponder 并替换 mouseDown 上的光标,然后在鼠标拖动事件上在 mouseDown 点和当前光标位置之间绘制一个半透明矩形。让我知道我的想法是否正确。

谢谢!

【问题讨论】:

    标签: cocoa macos


    【解决方案1】:

    这是您想要做的简单版本:在 CGShieldingWindowLevel(),setIgnoresMouseEvents:NO 创建一个全屏透明窗口,让视图将光标设置为您想要的任何内容,并实现拖动以在拖动区域中绘制选取框.

    【讨论】:

      【解决方案2】:

      您可以使用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]];
      

      【讨论】:

        猜你喜欢
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 2013-03-31
        • 2021-09-06
        相关资源
        最近更新 更多