我正在学习通过子类NSWindow绘制带有可可的定制窗口的教程。
本教程指出,在初始化程序开发人员中,应执行以下操作:
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];因此,我想知道这两条消息之间有什么区别,为什么需要--两者都是--因为它们的结果是相同的。
参考资料:教程可以是在这里发现的。
发布于 2009-09-26 07:57:37
我猜第一条消息是必需的,因为绘图系统需要知道它是否应该麻烦地更新位于您后面的视图。例如,如果另一个应用程序中的一个窗口(在您的窗口后面)更新(例如文本出现等),窗口系统通常不需要重新绘制它,但是由于您的窗口是透明的,所以在本例中是透明的。
发布于 2009-09-26 15:42:24
因此,我想知道这两条消息之间有什么区别,为什么需要--两者都是--因为它们的结果是相同的。
他们不一样。
查看opaque属性的文档:这是如何告诉NSView,您将在整个边界内绘制,完全覆盖视图下面的任何内容。
如果您没有覆盖整个边界,或者您并不总是以100%的不透明度绘制,那么您的视图就不是不透明的,您应该将该属性设置为NO。
如果您将视图的背景色设置为clearColor (这只是一个0%不透明度的颜色),并且不要在整个背景上绘制100%的不透明度,那么您的视图就不是不透明的。
另一方面,有可能以clearColor为背景,然后完全绘制它,在这种情况下,您的视图是不透明的,应该设置为这样。
https://stackoverflow.com/questions/1480654
复制相似问题