阻止透明绘图一直通过NSViews

时间:2011-04-05 13:54:12

标签: objective-c cocoa macos drawing nsview

我在NSView的drawRect中做了一些简单的绘图,代码如下

[[NSColor colorWithCalibratedWhite:0.250 alpha:0.700] set];
NSRectFill(dRect);

这张图是在嵌套视图中完成的,我发现透明度一直在父视图和窗口中显示,下面显示了一些屏幕。

我如何获得它,所以透明度只会传递到父视图(或之前在该帧中完成的任何绘图?

谢谢!

1 个答案:

答案 0 :(得分:4)

你真的不应该使用NSRectFill来绘制透明色。致电

NSRectFill(rect);

实际上只是

的捷径
NSRectFillUsingOperation(rect, NSCompositeCopy);

NSCompositeCopy不执行合成,因此在设置透明NSColor时可能会出现意外结果。

请尝试使用此代码:

[[NSColor colorWithCalibratedWhite:0.250 alpha:0.700] set];
[NSBezierPath fillRect:rect];

应正确绘制透明度,底层图形可见。