我正在尝试显示另一个NSView的实时视觉。
我的问题不是将视图呈现给图像。 cocoa: how to render view to image?
让我们调用源视图,事件视图以及一对多目标视图镜像视图。
每个视图都有一个导出和导入CGLayer。
导出图层将使其充当事件视图。
导入图层将使其充当镜像视图。
想法是事件视图将投射 ncdntReflection ,并且其所有镜像视图将捕获其 mrrSurface上的反射
到目前为止,我尝试了3种方法......
1。 CGLayer作为后备商店:
2。复合CALayers进入CGLayer
第3。 cacheDisplayInRect或CGWindowListCreateImage
由于以下原因,我不喜欢这些方法中的任何一种。
折叠图层不是一个选项,因为我需要在每个图层上设置动画。这意味着选项1和2都必须递归才能获得所有子视图。我很担心这种画的表现会受到影响。
选项3只需要太长时间才能成为现场解决方案。
理想情况下,事件视图和镜像视图都将遵循相同的渲染说明 - 就像WPF Visual Brush一样。
有金属溶液吗?
答案 0 :(得分:1)
您可能正在寻找NSView
displayRectIgnoringOpacity:inContext:方法。它可能不是最有效的方法,因为它会将视图绘制两次,但它似乎适用于您的情况。另一方面,我不确定缓存像素缓冲区是否更快,无论如何都需要更多内存。