是否可以切出NSWindow或NSView的某些部分并使其透视?我有一个的NSView一个NSWindow,我想要么:NSView或NSWindow中的孔
A)使在NSWindow一个洞,以便能够通过它或
B)设置我的NSWindow后台看到有一个明确的颜色,然后在上面创建一个NSView,并设置我的NSViews不透明度的某个部分,以便能够看到桌面。
这是我想创建的效果:
是否可以切出NSWindow或NSView的某些部分并使其透视?我有一个的NSView一个NSWindow,我想要么:NSView或NSWindow中的孔
A)使在NSWindow一个洞,以便能够通过它或
B)设置我的NSWindow后台看到有一个明确的颜色,然后在上面创建一个NSView,并设置我的NSViews不透明度的某个部分,以便能够看到桌面。
这是我想创建的效果:
是的,这是可能的,实际上没有那么难。
首先,创建一个NSView
的子类。在drawRect:
,类型:
NSRectFillUsingOperation(NSMakeRect(100, 100, 100, 100), NSCompositeClear);
这将清除在(100,100,100,100)
矩形的所有像素。
接下来,设置您刚才为你的类窗口的内容视图的类:
确保您NSWindow
是setOpaque:NO
。
[window setOpaque:NO];
然后你就完成了。启动你的应用程序并查看结果:
惹绘图代码来获得你想要的形状,但记得要使用NSCompositeClear
。有关合成模式的更多信息,请查看developer documentation。
谢谢!真的很好回答 – 2012-04-02 02:16:01
如果我想保留第一个视图并添加第二个视图或子视图,我仍然可以使用NSCompositeClear吗?是否有可能通过一个视图和一个窗口来看? – 2012-04-02 05:22:45
@GrantWilkinson As [截图](http://i.imgur.com/1RMRH.png)显示,superview的绘图代码中的“NSCompositeClear”不会绘制子视图。然而,子视图的绘图代码中的NSCompositeClear将通过它的超级视图来绘制。 – spudwaffle 2012-04-02 17:24:32
[如何使NSView透明并显示NSWindow下的内容?](http://stackoverflow.com/questions/8217487/how-to-make-an-nsview-transparent-and-show- whats-under-the-nswindow) – 2012-04-02 01:37:39