我编写了一个用于测量图像文件的 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/