Рисование линий и точек с какао - PullRequest
2 голосов
/ 22 марта 2011

Я пытаюсь нарисовать несколько точек, связанных с линиями.Точка состоит из «ядра» с орбитальной областью вокруг него.

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 Ответ

3 голосов
/ 22 марта 2011

Ваш код для рисования правильный.Тем не менее, вы должны обновить большую часть представления при его изменении.Похоже, вы обновляете только точку, которая движется, а не линии.Простое решение - позвонить:

[myView setNeedsDisplay:YES];

всякий раз, когда вы меняете местоположение точки.Это перерисовает весь вид.Вы можете использовать другие методы для более избирательного обновления представления только там, где оно изменяется, что может повысить производительность.

Обычно вы вызываете это в методе, вызываемом из NSNotification, отправленного вашим классом данных..

...