我開始學習OSX編程,並嘗試以編程方式繪製圖表。我遇到了使用CGPathRef(Core Graphics?)或NSBezierPath的示例。我缺乏的是對這兩種方法的理解。何時使用哪些和爲什麼?你能幫我嗎?提前致謝!CGPathRef和NSBezierPath有什麼區別?
3
A
回答
5
的NSBezierPath
覺得作爲圍繞CGPath
的包裝,讓您的生活更輕鬆,如果你有意見(NSView
)工作,而不是直接與圖形上下文(CGContext
)。 NSBezierPath
允許您在一個實例中指定路徑及其繪圖屬性(顏色,線尾等),而如果要使用CGPath
,則需要分別創建並添加路徑,顏色,線尾等,並設置值到上下文(這是什麼NSBezierPath
正在爲你做)。
所以,它們是相似的,但NSBezierPath
是最佳的使用,當你繪製成圖,並CGPath
提供所有的圖形上下文的原始動力。
0
那麼在某些情況下,NSBezierPath比CGPathRef更有益,例如在NSBezierpath中,它提供了可以使用顏色繪製路徑的api,但CGPathRef沒有提供任何API來繪製相同的需要使用CGContext的繪製路徑。這是一個區別,第二個區別是從ApplicationService框架派生的CGPath和派生自Appkit框架的NSBezierPath
1
NSBezierPath(和ios對應的UIBezierPath)是Objective-C對象,它們爲您封裝了CGPath API的大部分功能。這意味着你可以生活在Objective-C而不是Core Graphics C世界中。 最大的區別是C版本需要手動內存管理,可以更詳細。
除非另一個功能或方法需要特定的功能或方法,否則您可以使用您喜歡的任何一種。
然而,瞭解Cire Graphics以瞭解Cocoa繪圖中真正發生的事情很有幫助。
相關問題
- 1. NSRectFill和NSBezierPath(rect)有什麼區別.fill
- 2. 將CGPathRef轉換爲NSBezierPath
- 3. 有什麼區別`和$(Bash中有什麼區別?
- 4. 有什麼區別? :和||
- 5. &&和||有什麼區別?
- 6. 「/」和「/ *」有什麼區別?
- 7. 有什麼區別:。!和:r!?
- 8. ==和===有什麼區別?
- 9. Appender和〜有什麼區別?
- 10. $ @和$ *有什麼區別?
- 11. is和=有什麼區別?
- 12. #.00和#。##有什麼區別?
- 13. `==`和`is`有什麼區別?
- 14. '=='和'==='有什麼區別?
- 15. /和/#/有什麼區別?
- 16. | 0和~~有什麼區別?
- 17. `&`和`ref`有什麼區別?
- 18. ==和===有什麼區別?
- 19. ==和===有什麼區別?
- 20. `{}`和`[]`有什麼區別?
- 21. JavaScript和=== ===有什麼區別?
- 22. difftime和' - '有什麼區別?
- 23. =和==有什麼區別?
- 24. xtype和別名有什麼區別?
- 25. Mixpanel:識別()和people.identify()有什麼區別?
- 26. 有什麼區別
- 27. 有什麼區別
- 28. 有什麼區別?
- 29. 有什麼區別?
- 30. 有什麼區別?