Как разработать приложение для рисования в Delphi

Мне нужно разработать приложение в Delphi, где у меня есть элемент управления TDrawGrid, а изображение отображается в ячейках сетки в зависимости от выбранного макета. я рисую линию на холсте ячейки. функциональность, которую мне нужно предоставить, - это рисование линии, рисование нескольких строк на изображении внутри ячейки, выбор любой строки и перемещение ее, расширение, удаление.

Есть ли способ сделать линии элементами управления во время выполнения, чтобы все они реагировали на события мыши.


person Community    schedule 17.03.2009    source источник


Ответы (3)


Я бы посоветовал не реализовывать ваши объекты рисования как неоконные элементы управления VCL. Вы не получите от этого многого, но некоторые вещи (например, проверка на попадание) будут намного сложнее, чем при написании кода самостоятельно.

Элементы управления VCL имеют прямоугольную форму, поэтому для параллельных диагональных линий один элемент управления будет находиться поверх другого, по крайней мере, частично. Обычно события мыши достигают только самого верхнего элемента управления в Z-порядке. Это то, что вы должны исправить в своем собственном коде.

У выбранных линий должны быть отмечены конечные точки, чтобы пользователь знал, где взять их для перемещения или изменения размера. Опять же, что-то, что пользовательский элемент управления не предоставляет (во время выполнения), поэтому вам придется кодировать это.

Я бы, вероятно, просто создал класс линейных объектов и сам реализовал все функции для создания, рисования, выбора, перемещения и изменения размера, удаления линий.

person mghie    schedule 15.04.2009

Вы можете создавать собственные элементы управления. (Обязательно ознакомьтесь с руководством по написанию компонентов, потому что там есть некоторые зацепки).

Вы можете начать смотреть на элемент управления TShape. Используется для простых форм. Может быть, вы можете расширить его до линий поддержки.

person Toon Krijthe    schedule 17.03.2009

В прошлом я создал приложение для проектирования сетей, в котором использовались формы, текст и соединительные линии. Я использовал продукт DevExpress ExpressFlowChart, который, несмотря на некоторые недостатки, сделал задачу относительно простой.

Как упомянул Мгхи, проверка попаданий — одна из наиболее проблемных проблем. Приятно, когда кто-то делает за тебя тяжелую работу.

person moobaa    schedule 29.05.2009