gpt4 book ai didi

macos - 对于macOS Cocoa,如何指定屏幕上的某个窗口或矩形进行截图?

转载 作者:行者123 更新时间:2023-12-03 18:07:27 24 4
gpt4 key购买 nike

我编写了一个用于测量图像文件的 macOS 应用程序,我希望添加一个捕获屏幕截图的功能。我希望它有一个用户界面来执行此操作,就像 macOS 应用程序“预览”所具有的那样。

要使用其屏幕截图功能,请执行"file">“截屏”,然后会出现一个包含以下选项的子菜单:

  • 来自选择...
  • 从窗口...
  • 从整个屏幕

“从选择...”允许您通过单击并拖动来选择屏幕上的矩形。

“从窗口...”让您选择一个应用程序窗口。

“从整个屏幕”就是它所说的。

我可以找到将屏幕截图作为图像对象的代码,但我无法找到用户界面部分(用于选择矩形或窗口的部分)的任何代码。有谁知道这是怎么做到的吗?或者有一些代码可以做到这一点。

最佳答案

以下代码应该为您提供一个窗口截图:

@objc func myBtnAction(_ sender:AnyObject ) {
let windowID : Int = window!.windowNumber
let windowImage: CGImage? = CGWindowListCreateImage(.null, .optionIncludingWindow, CGWindowID(windowID), [.nominalResolution])
let bitmapRep = NSBitmapImageRep(cgImage: windowImage!)
let image = NSImage()
image.addRepresentation(bitmapRep)
let pngData = bitmapRep.representation(using: .png, properties:[:])
// your fileURL here
let fileURL = URL(fileURLWithPath: "/Users/xxxx/Desktop/WndShot.png")
do {
try pngData!.write(to: fileURL)
print("File saved: \(fileURL.absoluteURL)")
} catch {
print(error.localizedDescription)
}
}

我关闭了沙盒。

关于macos - 对于macOS Cocoa,如何指定屏幕上的某个窗口或矩形进行截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61731812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com