作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从屏幕上获取显示器指定部分的像素颜色。我正在使用CGDIsplayCreateImage(_:)
这样做,但由于某种原因,它没有创建当前打开的窗口的屏幕截图,而是只提供壁纸和任务栏的图像。
为了可视化屏幕截图,我使用了 SwiftUI View 。在我的应用程序中,我实际上不需要显示屏幕截图。
struct ScreenshotView: View {
let cgImage: CGImage
var body: some View {
Image(decorative: cgImage, scale: 3)
}
}
applicationDidFinishLaunching(_:)
方法如下所示。
func applicationDidFinishLaunching(_ aNotification: Notification) {
let contentRect = NSRect(x: 0, y: 0, width: 240, height: 240)
// Create the window and set the content view.
window = NSWindow(
contentRect: contentRect,
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: ScreenshotView(cgImage: CGDisplayCreateImage(CGMainDisplayID())!))
window.makeKeyAndOrderFront(nil)
}
由于 XCode 和其他一些应用程序已打开,因此它应该为我提供当前屏幕的屏幕截图,其中包含所有打开的 windows。相反,我得到了壁纸和任务栏的屏幕截图,其中显示了我的应用程序名称。没有显示任何应用程序,并且底座也丢失。
我做错了什么还是这是一个错误?
在 this stackoverflow 答案表明我正确使用了该函数。
最佳答案
即使这对某些人来说可能是显而易见的,我也会在 Ken Thomases 的帮助下回答我自己的问题。 .
您可以在下面找到我在目标中设置的设置。现在每次重建后它都可以工作。确保停用自动签名并将签名证书设置为“签名以在本地运行”。
希望这能在某个时候对某人有所帮助。
关于swift - CGDisplayCreateImage仅返回壁纸和任务栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788353/
我是一名优秀的程序员,十分优秀!