我有一个NSView,其中包含一个包含CALayer支持的NSView的NSScrollView。我尝试了所有将NSView捕获到NSImage中的常用方法(使用-dataWithPDFInsideRect
,NSBitmapImageRep的-initWithFocusedViewRect
等)。但是,所有这些方法都将CALayer支持的NSView视为不存在。我已经看过this StackOverflow帖子,但这是一个仅向图像渲染CALayer树的问题,而不是同时包含常规NSView和层支持 View 的NSView的问题。
任何帮助表示赞赏,谢谢:)
最佳答案
我发现做到这一点的唯一方法是使用CGWindow API,例如:
CGImageRef cgimg = CGWindowListCreateImage(CGRectZero, kCGWindowListOptionIncludingWindow, [theWindow windowNumber], kCGWindowImageDefault);
然后用以下方式裁剪出与您的 View 相对应的CGImage部分:
-imageByCroppingToRect
。然后从裁剪的CGImage制作一个NSImage。
请注意,如果该窗口的一部分不在屏幕上,则此方法将无法正常工作。
关于objective-c - 将包含一些CALayers的NSView渲染到NSImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4516191/