2014-01-12 86 views
0

我想在NSView中繪製圖像背景,並放置一些元素,這些元素在其頂部也有透明背景。在透明元素下在NSView中繪製圖像背景

我有一個NSView的overrided繪製矩形:

- (void)drawRect:(NSRect)rect 
{ 
[NSGraphicsContext saveGraphicsState]; 

NSImage *image = [NSImage imageNamed:@"header_background.gif"]; 

[image drawInRect:CGRectMake(0, rect.size.height - 75, rect.size.width, 75) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 

[NSGraphicsContext restoreGraphicsState]; 
} 

NSWindow初始化:

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag 
{ 
self = [super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag]; 
if (self) { 
    [self setOpaque:NO]; 
    [self setHasShadow:YES]; 
    [self setBackgroundColor:[NSColor clearColor]]; 
} 

return self; 
} 

之後a've有這樣怪異的效果。幻燈片和按鈕的背景也有時閃爍 enter image description here

我在做什麼錯了?

回答

1

那麼,首先,你的「顏色」在繪製圖像時被忽略,所以這沒什麼用。其次,我在這裏看到的代碼可能不會導致問題,您可以發佈文件的其餘部分嗎?

現在我懷疑,也許你已經把這個視圖標記爲不透明,當它不是,或者你的視圖層次結構中有其他奇怪的東西時。

+0

謝謝你的迴應。我已經更新了第一篇文章到目前的狀況。問題仍然在這裏..順便說一句,當我調整窗口元素的背景變得正常(不透明)。但是當它們被更新時,問題再次出現。 –

+0

所以它看起來像元素忽略了我在NSView中繪製的背景.. –

+0

爲什麼你在窗口上調用setOpaque:NO?你是否想要創造一個完全清晰的窗戶?那標題欄呢? –