如何使NSView透明,但保留属于它的对象?

时间:2013-04-22 18:16:32

标签: objective-c macos cocoa nsview

在我的应用程序中,我有一个NSView,我用它作为绘图画布,使用NSBezierPath绘制一些原始形状,如rects和ellipses。现在我需要让我的画布透明,但我希望我绘制的形状具有与之前相同的不透明度。我很好奇是否可以这样做,如果是的话,怎么样?!

编辑:

对不起之前的描述很糟糕!

我的最终目标是能够在透明画布上绘制正常的饱和色形状。透明,我的意思是完全清楚,如果可能的话。当我绘制形状时,我的视图一直在重绘,所以即使在这些条件下,我也希望所有内容都如上所述。

感谢任何形式的帮助!

2 个答案:

答案 0 :(得分:5)

要使窗口透明,以便显示其后面的内容,请将窗口的backgroundColor设置为[NSColor clearColor],将窗口的 opaque设置为{{1} }。

设置视图的NO是不必要的,因为默认情况下它已经是opaque,因为这不能满足您的需求。视图的NO属性意味着与Windows的opaque属性不同。

填写opaque是不必要的,因为所有这一切都会抹去您之前绘制的内容。如果你之前没有画过任何东西,那么你正在擦掉一块干净的木板。

您的观看绘制的任何内容(不是clearColor)仍然可见。

答案 1 :(得分:1)

backgroundColor的{​​{1}}设置为透明,例如:

您可以使用此方法

NSView

参考:Best way to change the background color for an NSView