How do I take a “screenshot” of an NSView?

前端 未结 4 1653
说谎
说谎 2020-12-05 05:36

I need to take the contents of an NSView and put them in an NSImage, for an experimental project. Is this possible? I did some Googling, tried two

4条回答
  •  情书的邮戳
    2020-12-05 06:37

    From WWDC 2012 Session 245 (translated to Swift):

    let viewToCapture = self.window!.contentView!
    let rep = viewToCapture.bitmapImageRepForCachingDisplay(in: viewToCapture.bounds)!
    viewToCapture.cacheDisplay(in: viewToCapture.bounds, to: rep)
    
    let img = NSImage(size: viewToCapture.bounds.size)
    img.addRepresentation(rep)
    

提交回复
热议问题