2011-07-05 37 views
2

注意這個應用程序:如何在NSWindow上面繪製一個「氣泡」?

enter image description here

怎樣繪製那種三角現有NSWindow以上的?我知道有問題的應用程序可能會將整個事件繪製爲自定義窗口,但我想保留現有的標題欄。有什麼辦法可以畫一個三角形,並將其附加在NSWindow以上?請注意,解決方案必須是MAS兼容的(即沒有私有框架或類)。

+0

可能重複的[如何使下拉式(非SHEET)窗口在可可](http://stackoverflow.com/questions/6542064/how-to-make-drop-down-not-sheet-windows- in-cocoa) –

+1

我不認爲它是重複的。 OP詢問是否可以在不創建自定義窗口的情況下擴展現有窗口的窗口框架,這與該問題中的彈出窗口不同。 –

回答

2

要做到這一點的唯一方法是創建一個無邊框子窗口,覆蓋現有窗口的邊緣。你需要自己畫任何陰影。

+0

我理解這個概念,我只是需要一些幫助來繪製它。我在iOS上畫了一些,但在Mac上我是新的。 –

+0

也許你應該看看在Mac上繪圖([可可繪圖指南](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Introduction/Introduction.html%23 // apple_ref/doc/uid/TP40003290)是一個很好的開始)。 –

0

更全面的解決方案將涉及子類NSThemeFrame和做一些自定義繪圖。看看Matt Gallagher的Drawing a custom window on Mac OS X。它包含大量有用的信息,Google在這裏也會有很大的幫助。

+4

請記住,'NSThemeFrame'是一個私人類。沒有應用商店給你。 –

+0

啊哈。感謝提及,羅布,這對我不起作用。它必須是AppStore安全的。 –

+0

這是真的(儘管你最初沒有提到它)。不過,回頭看看的人可能會覺得這值得注意。我希望你不介意我在你的原始問題中增加了一個MAS兼容性註釋,所以人們不會感到困惑。 –

0

我寫了一個開源(BSD)的框架,吸引類似這樣的窗口:https://github.com/sbooth/SFBPopovers

它不會直接做你需要什麼,但可以說明繪製自定義窗口框架的基本知識。

+0

謝謝斯蒂芬。我並不是真的想要HUD風格的窗口,我只是想保留現有的窗口風格,並在上面添加一個小三角形。我過去使用過你的代碼,它工作得很好,這不正是我現在需要的。 –