2011-11-21 1 views
8

나는 osx에서 재미있게 부분 확대 응용 프로그램을 만들고 있는데, 나는 그 답을 찾지 못하는 걸림돌을 만났다.NSView를 투명하게 만들고 NSWindow 아래에 무엇이 있는지 보여주는 방법은 무엇입니까?

NSWindow 안에 NSView가 있습니다. clearColor 및 alpha .25로보기를 설정했지만 NSWindow를 NSView 뒤에 투명하게 만드는 방법을 알 수 없으므로 NSView를 선택할 때 응용 프로그램 아래에있는 것을 볼 수 있습니다.

doc을 통해 파기 한 것이 내가 생각한 것을 찾지 못하는 것입니까? 이름

사용자 정의 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. 
} 

다음으로 나는 창 콘텐츠를 설정합니다. 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

관련 문제