2011-11-21 4 views
8

私はosxでルーペスタイルのアプリケーションを楽しくしています。私は困ってしまいました。答えが見つからないようです。NSViewを透明にして、NSWindowの下にあるものを表示するにはどうすればいいですか?

私はNSWindowの中にNSViewを持っています。私はclearColorとalphaを.25に設定しましたが、NSWindowをNSViewの背後に透明にする方法を理解することができないので、選択時にアプリケーションの下にあるものを見ることができます。

ドッグを掘り下げても、私が何か考えているものを見つけることができないのでしょうか?命名

カスタムNSViewの:

おかげで

答えて

20

おそらくNSWindow'ssetOpaque:を試してみて、あなたはまた、透明色(setBackgroundColor:)で、ウィンドウの背景色を設定する必要が

ここでは、私はちょうどでした私の迅速なサンプルです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. 
} 

次は私が窓のcontentView研を設定しました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全体」とは、「タイトルバー+コンテンツ」またはすべてのコンテンツ領域を意味しますか?私はあなたがウィンドウのコンテンツの一部を透明に設定することはできないと思っています。あなたはすべて透明にし、透明にしたくないものを描画する必要があります。 –

+1

@acreek:ウィンドウの一部を透明にしたいときは '[mywindow setOpaque:NO]'を呼び出すのが理にかなっていると思います。 'setBackgroundColor:'を呼び出す必要があるかもしれません。ドキュメントは確かに明確になりました。 – JWWalker

関連する問題