如何以编程方式将桌面图像设置为NSWindow?

时间:2018-08-16 14:15:56

标签: objective-c macos background-image nswindow

如何在Mac OS应用程序中以编程方式将桌面图像设置为NSWindow背景图像。假设我单击一个按钮,那么无论桌面上有什么图像,它都应应用于NSWindow Background。

2 个答案:

答案 0 :(得分:1)

要获取屏幕的桌面图像,请使用NSWorkspace提供的方法。

方法desktopImageURLForScreen:返回图像文件的URL,而方法desktopImageOptionsForScreen:返回桌面图像选项的字典-图像应如何缩放,是否应平铺等。

使用这些方法和NSImageView,您应该能够显示适当缩放,平铺和对齐的桌面图像作为窗口背景。如果要在多屏幕系统上支持跨屏幕窗口,则涉及的内容会更多一些,但方法基本相同。

HTH

答案 1 :(得分:0)

如果未将应用程序沙盒化,则CRD建议确实起作用。如果是这样,那么您将无法使用request做任何事情。

您可以使用Core Graphics并获取桌面图片:

yield Request(parse=..., headers={"User-Agent":"user_agent", "Referrer":"url_here", etc.})

然后获取桌面图像

NSWorkspace.shared.desktopImageURL(for: screen)

感谢Cocoa: take screenshot of desktop wallpaper (without icons and windows)How to get window list from core-grapics API with swift