所有NSViews我在Cocoa应用程序3个NSViews,其它的每个子视图。绘制透明NSImage中使得透明
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不意味着“分层”,但我不能确定这是与此有关。到目前为止,我已经很好地使用核心图形绘制到NSView上,并且透明部分暴露了“后面”图层。只是试图合成这个图像,这个问题已经出现。
我会很感激任何指针,为什么发生这种情况,解决它的一个可行的办法。
截图中的紫色是我的桌面。正如你所看到的,紫色是在合成图像的灰色箭头下。不,我不想要NSCompositeSourceOver - 它会导致http://i.imgur.com/LZgxk.png。我想要的效果与我的原始图片一样,但没有像现在这样呈现桌面。 – JoeR 2011-01-28 14:41:25