首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setOpaque:NO vs setBackgroundColor:[NSColor clearColor]

setOpaque:NO vs setBackgroundColor:[NSColor clearColor]
EN

Stack Overflow用户
提问于 2009-09-26 07:17:53
回答 2查看 5.5K关注 0票数 4

我正在学习通过子类NSWindow绘制带有可可的定制窗口的教程。

本教程指出,在初始化程序开发人员中,应执行以下操作:

代码语言:javascript
复制
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];

因此,我想知道这两条消息之间有什么区别,为什么需要--两者都是--因为它们的结果是相同的。

参考资料:教程可以是在这里发现的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-26 07:57:37

我猜第一条消息是必需的,因为绘图系统需要知道它是否应该麻烦地更新位于您后面的视图。例如,如果另一个应用程序中的一个窗口(在您的窗口后面)更新(例如文本出现等),窗口系统通常不需要重新绘制它,但是由于您的窗口是透明的,所以在本例中是透明的。

票数 9
EN

Stack Overflow用户

发布于 2009-09-26 15:42:24

因此,我想知道这两条消息之间有什么区别,为什么需要--两者都是--因为它们的结果是相同的。

他们不一样。

查看opaque属性的文档:这是如何告诉NSView,您将在整个边界内绘制,完全覆盖视图下面的任何内容。

如果您没有覆盖整个边界,或者您并不总是以100%的不透明度绘制,那么您的视图就不是不透明的,您应该将该属性设置为NO

如果您将视图的背景色设置为clearColor (这只是一个0%不透明度的颜色),并且不要在整个背景上绘制100%的不透明度,那么您的视图就不是不透明的。

另一方面,有可能以clearColor为背景,然后完全绘制它,在这种情况下,您的视图是不透明的,应该设置为这样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1480654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档