objective-c – 将包含一些CALayers的NSView渲染到NSImage

我有一个NSView,其中包含一个NSScrollView,其中包含一个支持CALayer的NSView.我已经尝试了将NSView捕获到NS Image中的所有常用方法(使用-dataWithPDFInsideRect,NSBitmapImageRep的-initWithFocusedViewRect等).但是,所有这些方法都将CALayer支持的NSView视为不存在.我已经看过 this StackOverflow帖子,但这是一个关于只将CALayer树渲染到图像的问题,而不是包含常规NSView和图层支持视图的NSView.

任何帮助表示赞赏,谢谢:)

解决方法

我发现这样做的唯一方法是使用CGWindow API,如:
CGImageRef cgimg = CGWindowListCreateImage(CGRectZero,kCGWindowListOptionIncludingWindow,[theWindow windowNumber],kCGWindowImageDefault);

然后剪掉与您的视图对应的CGImage部分

-imageByCroppingToRect.

然后从裁剪的CGImage中制作一个NSImage.请注意,如果该窗口的某些部分位于屏幕外,则无法正常工作.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...