Как я могу нарисовать контрольные точки пути Безье в Java?

Я создал путь кривых Безье, и он отлично работает, чтобы нарисовать путь. Но я не знаю, как я могу нарисовать контрольные точки вместе с путем. Возможно ли это или мне нужно отслеживать их в другой структуре данных?

Обновление: Причина, по которой я хочу нарисовать контрольные точки, заключается в том, что я позволю пользователю редактировать кривые с помощью маркеров на контрольных точках.

Я создаю путь с помощью:

Path2D.Double path = new Path2D.Double();
path.moveTo(0,0);
path.curveTo(5, 6, 23, 12, 45, 54);
path.curveTo(34, 23, 12, 34, 2, 3);

И рисование с помощью:

g2.draw(path);

Я протестировал с помощью PathIterator, как предложил trashgod, но будет сложно управлять кривыми таким образом, если я хочу, чтобы пользователь мог редактировать контрольные точки.


person Jonas    schedule 28.03.2010    source источник


Ответы (1)


Вы можете получить PathIterator для ссылаться на массив координат для каждой точки в Shape. Вы можете использовать их для рисования маркеров изменения размера и контрольных точек вдоль кривой при редактировании. Вот пример редактирования с использованием пользовательской реализации кривой.

person trashgod    schedule 28.03.2010
comment
Вы правы насчет PathIterator, но я думаю, что изменю свое представление, потому что я хочу, чтобы пользователь редактировал кривые, и с этим будет сложно справиться только с представлением Path. - person Jonas; 29.03.2010
comment
Почему бы не сохранить и то, и другое: Path для удобства рендеринга и производную геометрию для редактирования? Вам придется обновлять последний при добавлении или удалении точек. - person trashgod; 29.03.2010