是否可以切出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