2011-11-21 63 views
8

我在OSX上製作放大鏡風格的應用程序以獲得樂趣,我遇到了一個我似乎無法找到答案的障礙。如何使NSView透明並顯示NSWindow下的內容?

我在NSWindow裏面有一個NSView我將視圖設置爲clearColor,alpha設置爲.25,但我無法弄清楚如何讓NSWView在NSView背後透明,這樣您就可以在應用程序選中時看到它們。

正在挖掘文檔的似乎無法找到我在找什麼想法?

感謝

回答

20

也許嘗試NSWindow'ssetOpaque:,你還需要設置窗口的背景顏色與透明色(setBackgroundColor:

這裏是我的快速樣品我只是做:

自定義的NSView命名myView:

-(void)drawRect:(NSRect)dirtyRect 
{ 
    [[NSColor windowBackgroundColor] set]; // Using the default window colour, 
    dirtyRect.size.width /= 2; 
    NSRectFill(dirtyRect);  // Only draw the part you need. 
} 

Next我設置了一個窗口的contentView inst myView的ance。我在IB中做過,但可以通過setContentView手動設置。

而且我可以這樣來配置窗口:

[myWin setOpaque:NO]; //Tells the window manager that the window might have transparent parts. 
[myWin setBackgroundColor:[NSColor colorWithCalibratedWhite:1.0 alpha:0.0]]; //Tells the window to use a transparent colour. 

這是我所得到的。

Window with partially transparent http://i44.tinypic.com/a41jxi.jpg

所以就像我說的,你需要告訴窗口中使用一種無​​形的顏色作爲背景,然後重繪你實際上需要繪製的部分。

+0

我想過那些,但那些爲整個NSWindow設置的不僅僅是它的一部分。 – acreek

+0

「整個NSWindow」是指「標題欄+內容」或所有內容區域?我不認爲你可以將窗口內容的一部分設置爲透明,你必須使其全部透明,並繪製出你不想透明的內容。 – 2011-11-21 19:48:29

+1

@acreek:我想當你希望窗口的一部分是透明的時候調用'[mywindow setOpaque:NO]'是有意義的。可能還需要調用'setBackgroundColor:'。文件當然可以更清楚。 – JWWalker

相關問題