CGDisplayCreateImage仅返回墙纸和任务栏

问题描述 投票:0回答:1

我正在尝试从屏幕上获取显示器指定部分的像素颜色。我正在使用CGDIsplayCreateImage(_:)来执行此操作,但是由于某些原因,它没有创建当前打开的窗口的屏幕截图,而是仅提供了墙纸和任务栏的图像。

为了可视化屏幕截图,我正在使用SwiftUI视图。在我的应用程序中,实际上我不需要显示屏幕截图。

CGDIsplayCreateImage(_:)

[struct ScreenshotView: View { let cgImage: CGImage var body: some View { Image(decorative: cgImage, scale: 3) } } 方法看起来像这样。

applicationDidFinishLaunching(_:)

由于XCode和其他一些应用已打开,因此应该为我提供所有打开的窗口的当前屏幕截图。相反,我得到了墙纸的屏幕截图和显示我的应用名称的任务栏。没有应用程序显示,并且坞站也丢失。

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) }

我是在做错什么还是这是一个错误?

enter image description here中,stackoverflow的答案表明我正确使用了该函数。

swift xcode appkit
1个回答
0
投票

即使这对某些人来说很明显,我将在this的帮助下在这里回答我自己的问题。

© www.soinside.com 2019 - 2024. All rights reserved.