2010-02-06 36 views

回答

6

Tell the NSImage instance for the icon that it should be a template image.狀態項應該自動繪製正確的方式。

我的原始答案如下。它描述瞭如何手動完成該效果。在豹和後來,你不需要做任何 - 只是告訴圖像是一個模板圖像,它應該只是工作。


在菜單附加功能中,這是在運行時應用的效果。我認爲這是它的菜單額外的事情;在狀態項目中,當然,取決於應用程序。

菜單多餘的圖標,不包括鍵盤佈局圖標,純黑色。 (看看菜單額外的內容來看看這個)。額外的菜單和/或SystemUIServer(在你的案例中,你的應用)會對此應用一個漸變:頂部大約-10%的不透明度,到底部。

對於您的應用,在Opacity的運行時間之前,這將很容易做到。在圖層的主要內容中,用純黑填充您的形狀;在圖層的蒙版中,繪製一個填充漸變的矩形,佔據畫布的整個16乘16點的大小。對蒙版模式使用白色或黑色;只要將漸變色設置爲匹配即可:對於白色模式,將漸變設置爲純黑色,不透明度爲90%至88%;對於黑色模式,將其設置爲純白色,不透明度爲90%至88%。

您也可以在運行時使用混合模式來執行此操作。首先繪製純黑色,90%至88%的不透明度漸變,然後使用目標模式繪製形狀(純黑色,100%不透明度)。

+0

如果我在這裏理解了這個問題,運行時效果在[10.5 AppKit版本說明中的「文本和圖像效果」] [1]中進行了描述。 [1]:http://developer.apple.com/mac/library/releasenotes/cocoa/AppKitOlderNotes.html#TextAndImageEffects – Ken 2010-02-17 11:15:38

+0

D'oh!描述效果的部分告訴讀者當你將圖像作爲模板圖像時會發生什麼。這就是提問者應該做的事情,這是所有提問者應該做的。感謝您指出這一點;我已經相應地修改了我的答案。 – 2010-02-17 11:46:55

+0

非常感謝! 對於那些有興趣的人,這裏有更多的信息: '爲了將圖像標記爲模板,請調用 - [NSImage setTemplate:]。爲方便起見,在10.5或之後的應用程序中,通過名稱以@「Template」結尾的 - [NSImage imageNamed:]從磁盤讀取的任何圖像將在創建時標記爲模板。這使得在Interface Builder中使用模板圖像變得很容易。只要確保您的圖片文件名以「模板」結尾。 – 2010-02-18 05:15:54

相關問題