[問題] 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