2011-06-08 173 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