
114
|
第七章
所有繪圖作業的發生都是按照你呼叫它們的順序而進行的。在這段程式碼
中,我們在填滿矩形之後為它描邊,如果我們交換
[path fill]
與
[path
stroke]
呼叫的順序,就會得到稍微有點不同的效果,綠色填充會稍微覆
蓋到黑色描邊。
建立自訂軌跡
使用矩形或圓角矩形建立軌跡是很有用的,但是你常常會想要建立完全屬於你自己的形
狀—或許是多邊形,或者是人物輪廓。
NSBezierPath
類別可表示任何能以 Bezier 曲線定義的形狀。你可以建立空白曲線
(blank curve),然後增加定義此曲線的控制點(control point),一旦完成,就可以利
用完成的
NSBezierPath
物件來進行描邊與填充。
為了建立自訂軌跡(custom path),首先產生空軌跡(empty path),然後開始發佈建構
它的命令。隨著軌跡被建造,你可以想像有一支虛擬畫筆在畫布上四處移動,你可以︰
• 把筆移到某一點
• 將筆從目前所在位置畫一條線到另一個點
• 將筆從目前所在位置畫一條曲線到另一個點,使用額外兩個控制點定義該曲線要如
何彎曲
• 將筆從目前所在位置畫一條線到第一個點,將軌跡封閉起來
我們現在要更新繪圖程式碼,以下列程式碼替換
drawRect
方法,繪製一個心形。因為這
個形狀取決於所指定之各個控制點的位置,這裡有不少數字要輸入。假如你無法把它們
弄得完美無誤,也不必太過擔心—這個形狀大體上應該會保持正確。
- (void)drawRect:(NSRect)dirtyRect
{
NSBezierPath* ...