用Cocoa绘制线条和点

时间:2011-03-22 06:25:15

标签: cocoa drawing nsbezierpath

我正在尝试绘制一些与线条相连的点。点由“核”组成,周围有轨道区域。

enter image description here

当我尝试移动那些给我扭曲线条的点时出现问题: enter image description here

在我的drawRect:方法中,我迭代一组创建的点,并使用lineToPoint:方法绘制贝塞尔曲线路径。

Dot *prevDot = nil;
NSBezierPath *line = [NSBezierPath bezierPath];
for (Dot *dot in _dots) {
    if (!prevDot) {
        [line moveToPoint:dot.position];
    } else {
        [line lineToPoint:dot.position];
    }
    prevDot = dot;
}
[line stroke];

我的问题是,一旦移动其中一个点,我应该使用什么技术来实现点之间的简洁线更新?

1 个答案:

答案 0 :(得分:3)

您的绘图代码是正确的。但是,必须在更改时更新视图的大部分。看起来你只是更新移动的点,而不是线。一个简单的解决方法是致电:

[myView setNeedsDisplay:YES];

每当你改变点的位置。这将重绘整个视图。您可以使用其他方法更有选择性地仅在更改视图的位置更新视图,这可以为您提供更好的性能。

通常,您可以在从数据类发送的NSNotification调用的方法中调用此方法。