[问题] NSView绘制背景问题(layer-backed)

楼主: airchiung (玻璃腿)   2015-03-20 09:25:56
各位好,本人在学习开发Mac osx的软件,在开发过程中遇到一个问题
但始终不能理解,想请各位帮忙解惑
我希望用NSView画出一个透明(或有透明度)的背景
于是在NSView的drawRect:中写了:
[[NSColor clearColor] set];
NSRectFill(dirtyRect);
但呈现的结果不如预期,View变成了整张黑色的而不是透明色
查官方文件后说明是因为NSRectFill是使用NSCompositeCopy的原因,这点没有问题。
接着我将NSView的Core animation打勾(该View变成layer-backed view)
同样的程式码,View就变透明了
一直想不透是为什么,看了一些资讯还是不知道原因,希望各位能帮忙说明,谢谢!
楼主: airchiung (玻璃腿)   2015-03-20 09:29:00
补充:我是想了解明明都是NSRectFill,会因为有无勾选Core animation而有所差异,照理说应该都是要黑色?
作者: darktt (小朱)   2015-03-20 10:43:00
你的NSView的background有设定透明吗?
楼主: airchiung (玻璃腿)   2015-03-20 10:49:00
请问是说isOpaque这个值吗?如果是的话是default值NO
作者: darktt (小朱)   2015-03-20 12:13:00
这篇也许能解决你的问题:http://ppt.cc/vJG7
楼主: airchiung (玻璃腿)   2015-03-20 13:08:00
嗯这篇我有看过了,不过这篇前提是在NSView都没有使用setWantsLayer=YES的情况下,我想知道说为什么只要打开后NSRectFill却可以有透明度,应当是要不透明的但还是谢谢你的回应!

Links booklink

Contact Us: admin [ a t ] ucptt.com