2012-11-07 127 views
3

我想在我的Mac應用程序中獲取標籤上的內陰影。NSTextField內陰影

我想匹配我的設計師發送的Photoshop設計。 我想匹配的表情是: Photoshop Design

這在Photoshop正在做的方法是使用以下設置設置內陰影: Photoshop Settings

我見過幾個不同的解決方案,對於這種類型的在其他網站上的東西,但沒有一個是正確的。

例如大家說,使用:

[[myNSTextField cell] setBackgroundStyle:NSBackgroundStyleRaised]; 

我發現很多東西有關在NSBezierPath做一個內陰影或相似但不帶有標籤。

這個問題的答案說,使用上述setBackgroundStyle再到

說你的漸變背景則例如可以通過使用自定義視圖與NSGradient

但是,在到達這個觀點去了嗎? 答案參考的鏈接再次討論了在窗口上做內部陰影,而不是文本。

任何人都可以幫我解決這個問題嗎?

謝謝

回答

4

這個效果在Photoshop中很容易製作。不幸的是,在Cocoa應用程序中,它並不那麼簡單。 我不知道用標準控件做一個簡單的方法,但我會告訴你如何處理這個問題。

問題是,陰影必須由對象和下落。換句話說,陰影總是模態的,不能僅僅繪製出沒有實際物體的陰影。在覈心圖形中,陰影是繪圖上下文的一個屬性。當我們渲染一個對象時,我們可以將陰影效果添加到進程中。

現在,當我們知道真正的問題,解決的辦法是小菜一碟:)的

比方說,這裏是你的文本生成的圖像。您可以在互聯網上找到如何將文本呈現到位圖上下文的示例。

enter image description here

你只需要:

倒轉。

enter image description here

與陰影渲染它下降到的圖像(位圖上下文)。

enter image description here

通過排除反轉圖像掩模圖像。

enter image description here

渲染的背景紋理你有結果圖像。

enter image description here

我會做一個的NSView子類,並繪製層上所有這些東西。您可以找到如何創建自己的位圖上下文並繪製它的示例。這裏是如何使用面具https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html

我希望這有助於。