我需要获取NSWindow实例的图像。对于视图,通常(从10.14开始)先使用bitmapImageRepForCachingDisplay(in:),然后使用cacheDisplay(in:to:)。但是NSWindow中没有这样的功能。仍然可以使用dataWithEPS(inside:)或dataWithPDF(inside:),但是由于窗口舍入(没有透明背景),因此生成的图像会丢失元素,并且角是黑色的。
因此,请分享您的经验,该方法如何生成窗口的精确图像并且圆角没有黑色背景。
完美的解决方案是完全按照系统的方式(Cmd + Shift + 4 +空格)获取窗口的屏幕截图。
====================================
编辑:由于存在一个重复的问题,该问题的答案并非直接答案,下面是代码(Swift 4.2):
func image() -> NSImage? {
if let window = window, let image = CGWindowListCreateImage(.zero, .optionIncludingWindow, CGWindowID(window.windowNumber), .nominalResolution) {
return NSImage(cgImage: image, size: NSSize(width: image.width, height: image.height))
}
return nil
}