我正在製作一個簡單的繪圖應用程序,並使用NSBezierPath
來畫線。我正在繼承NSView
。我需要製作一種方法,允許用戶更改下一個路徑的顏色和大小(所以用戶按下一個按鈕,然後下一次繪製路徑時它是指定的顏色/大小),但是現在當我嘗試這樣做會改變所有現有路徑的顏色和大小。我怎麼能讓他們「個人」,可以這麼說呢?這裏是我的代碼:NSBezierPath獨特線條
- (void)drawRect:(NSRect)dirtyRect
{
[path setLineWidth:5];
[path setLineJoinStyle:NSRoundLineJoinStyle];
[path setLineCapStyle:NSRoundLineCapStyle];
[path stroke];
}
- (void)mouseDown:(NSEvent *)theEvent {
NSPoint location = [theEvent locationInWindow];
NSLog(@"%f, %f", location.x, location.y);
[path moveToPoint:location];
[self setNeedsDisplay:YES];
}
- (void)mouseUp:(NSEvent *)theEvent {
}
- (void)mouseDragged:(NSEvent *)theEvent {
NSPoint location = [theEvent locationInWindow];
[path lineToPoint:location];
[self setNeedsDisplay:YES];
}
- (void)changeBrushColor:(NSString *)color {
// change color of the next path
[self setNeedsDisplay:YES]; // show it
}
所以我需要做一個單獨的NSBezierPath路徑。
數組中會有什麼? NSBezierPath對象?我不確定你的意思?你能提供一個僞碼的例子嗎? – Alex
是的,你在每個mouseDown中創建一個新的NSBezierPath。我假設你知道如何製作NSBezierPath,因爲你已經在你的應用中使用它們了。一旦你創建了路徑,你只需調用[myArray addObject:myBezierPath] – sosborn
@Alex:如果你想爲每個路徑使用不同的筆觸顏色和筆劃寬度,那麼你還需要保留其中的一個以上。我建議製作一個擁有路徑和顏色的對象,並將這些對象保留在數組中。創建對象並在'mouseDown:'中設置其顏色和路徑的線寬。 –