Рисование линий и т.д с возможностью правки

  • Автор темы Bazil
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Bazil

Есть задача. Написать программу графического редактора, в котором нарисованные им объекты (линии и прочие) можно было бы изменять (растягивать,сжимать) как в редакторах векторной графики. Подскажите пожалуйста, как это можно реализовать в Delphi.
 
B

Barmutik

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

Bazil

Конкретизирую вопрос. Например рисуем линию. При обычном рисовании с помощью Image.Canvas весь рисунок представляет собой набор точек, который можно только переместить. Необходимо иметь возможность выделить мышкой начальную, конечную точки или саму линию и в зависимости от выделения переместить выделенный объект. С концами линии более-менее понятно. Каждую из конечных точек можно представить как Image, и заниматься их перемещением. А как представить и выделить мышкой саму линию ?
 
G

grigsoft

Нет, ты концептуально не понимаешь подхода.
Есть набор объектов (линии, кружки и т.д.). Этот набор отрисовывается в окошке (канвасе по вашему :))
Когда человек рисует линию, ты линию не рисуешь - ты создаешь объект Линия с указанными координатами, добавляешь в список. А обновленный список рисуется уже весь, включая новую линию.
Когда щелкают мышкой,ты по списку объектов находишь тот что под мышкой, ставишь ему атрибут - Выделен. Такой объект рисуется по другому: подсвечивая выделение и ключевый точки, за какие можно изменять размеры.
И так далее.
 
B

Barmutik

Храните начальную и конечные кооринаты линии .. при выделении всей линии прост рисуйте нажные Вам значки обозначающие выделения вокруг линии .. и всё .. в чём сложность ?
 
B

Bazil

grigsoft
Со способом хранения объектов в виде списка координат все понятно. Неясности возникают, когда пользователь щелкает мышкой в произвольной точке линии (для него линия - это реальный объект, а не координаты начала и конца) и пытается переместить куда-то ВСЮ линию вместе с концами. Если я правильно понимаю, в этом случае нужен какой-то алгоритм определения принадлежности точек рисунка, которые находятся в месте щелчка мышкой именно той линии, которая описана в списке координат.
 
G

grigsoft

Правильно понимаешь. Учебник математики, 9 класс. Уравнение прямой через 2 точки и все остальное. Ну или книжку по основам компьютерной графики, Роджерса например, если мне память не изменяет.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!