NSWindow图像表示

时间:2018-11-28 17:19:40

标签: swift cocoa nswindow

我需要获取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
}

0 个答案:

没有答案