Как разработать приложение для рисования в Delphi - PullRequest
1 голос
/ 17 марта 2009

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

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

Ответы [ 3 ]

3 голосов
/ 15 апреля 2009

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

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

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

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

1 голос
/ 29 мая 2009

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

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

1 голос
/ 17 марта 2009

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

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

...