绘制透明图像

时间:2011-06-08 14:52:23

标签: objective-c cocoa nsview drawrect nsimage

我为按钮创建了一个自定义视图,因为我需要在鼠标结束时实现一些突出显示。该课程非常简单,我已经实施了mouseEntered:以及mouseExited:。视图已在init方法中注册以进行跟踪(不确定它是否是最佳位置)。

问题在于绘图。我保留了一个ivar mouseOver,在鼠标输入时设置为YES,在鼠标退出时设置为NO。另一个ivar用于图像,称为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);

但没有成功。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

[NSColor clearColor]是纯粹透明的颜色。您可能希望使用具有某种不透明度的颜色进行填充,例如[NSColor whiteColor]