2011-06-08 214 views
1

我創建了一個按鈕的自定義視圖,因爲我需要在鼠標結束時實現一些高亮顯示。課程非常簡單,我已經實施了mouseEntered:以及mouseExited:。該視圖在init方法中進行了跟蹤註冊(不知道它是否是最好的地方)。繪製透明圖像

問題在於繪製。我保留一個ivar mouseOver,在鼠標輸入時設爲YES,在鼠標上輸入NO。另一個伊娃是圖像,稱爲image。透明度是指鼠標懸停與否時的區別。這裏是我的drawRect:

- (void)drawRect:(NSRect)dirtyRect 
{ 
    [image drawAtPoint:NSMakePoint(0.0,0.0) 
       fromRect:dirtyRect 
      operation:NSCompositeCopy 
       fraction:((mouseOver) ? 1.0 : 0.0)]; 
} 

它工作得很好,但只有當鼠標第一次進入,顯然。我想問題是在繪製其他圖像之前,視圖並未被清除。我試過加入:

[[NSColor clearColor] set]; 
NSRectFillUsingOperation(dirtyRect, NSCompositeClear); 

但是沒有成功。我怎樣才能解決這個問題?

回答

0

[NSColor clearColor]是一種純粹透明的顏色。你可能想用一些不透明的顏色填充,比如說,[NSColor whiteColor]

+0

嗯,我明白了。但如果可能的話,我不想用一種顏色填充它。清除視圖意味着透明。 – sidyll 2011-06-08 18:07:12