我在 Cocoa 应用程序中有三个 NSView,每个子视图都是另一个。
FirstNSView -> SecondNSView -> ThirdNSView
FirstNSView 使用核心图形绘制纯色背景填充。
SecondNSView 是许多其他视图的容器视图。
ThirdNSView 使用以下代码将 NSImage 绘制到其框架中drawRect
:
[img drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, img.size.width, img.size.height) operation:NSCompositeDestinationAtop fraction:1.0];
我使用它是NSCompositeDestinationAtop
因为它允许图像几乎充当img
.
但是,透明区域img
使整个窗口透明,而不是像我期望的那样显示到 FirstNSView。像这样:
请注意,尝试使用其他复合类型仍然会导致同样的问题。
我已经阅读了很多关于 NSViews 不是用于“分层”的信息,但我不确定这是否与此处相关。到目前为止,我一直在使用 Core Graphics 在 NSView 上进行很好的绘图,并且透明部分暴露了“后面”的层。只有在尝试合成此图像时才会出现此问题。
我很感激任何关于为什么会发生这种情况以及解决它的可能方法的指示。