Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Создание на Delphi компонентов с непрямоугольной областью реакции на события мыши

Ответить
Настройки темы
Delphi - Создание на Delphi компонентов с непрямоугольной областью реакции на события мыши

Старожил


Сообщения: 174
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изменения
Автор: Andrik
Дата: 05-05-2007
Описание: орфография
Мне надо на дельфях сделать компоненты в стиле автокада типа линия, ломаная линия сплайн и т.д., но не просто нарисовать, а чтоб они были обьектами, их можно было бы зацепить мышей и перетащить, изменить и т.д..
Подскажите как это реализовать, плиз! ОЧЕНЬ НАДО!!!
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:16, 05-05-2007

 

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


ну и зделай их объектами.
Создай класс у которого будут свойства описывающие твою кривую
а также rect описывающий область в которой нарисована эта кривая.
затем в событии нажатия кнопки мыши проверяешь координаты, не попала ли она в область описанную в свойстве rect
если попала то в событии движения мышки смещаеш координаты rect в соответствии с координатами передвижения мышки.
ну а в тонкостях думаю разберёшся.
незабудь перерисовать объект когда отпутишь мышку

Отправлено: 22:07, 25-11-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 174
Благодарности: 6

Профиль | Отправить PM | Цитировать


ОК! а когда такая ситуация, что таких обджектов куча (как в автокаде) и тот который получил событие считает что не он его должен обработать, как ему передать событие "нижнему" по зет порядку обьекту, а тот может быть передаст его еще более "нижнему" или сам обработает!?

Отправлено: 10:34, 26-11-2007 | #3


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Тогда наверное разумно ввести понятие слоя. И делать так чтобы в одном слое кривые (объекты) не накладывались друг на друга.

Как вариант можно посмотреть как это реалиазовано в каком нибудь открытом векторном редакторе. И здесь же я так понимаю у вас еще встанет проблема сохранения всего этого в файл для последующего редактирования. Cледовательно вам прийдется либо избретать свой формат, либо брать уже готовый открытый векторный и смотреть как это реализовано там.

P.S. А зачем вам это нужно, коль не секрет???

-------
black-eric.livejournal.com


Отправлено: 14:05, 26-11-2007 | #4


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не ребят ну всё достаточно просто. Не могут же области перекрывать другдруга полностью достаточно попасть в область не занятую другими объектами. а если же перекрыли то не обессутьте оттащите объект в сторону и занимайтесь нижним. а понятие слоя обязательно. У тебя должен быть масив объектов. перебирая его в событиях ты и будишь манипулировать объектами. а положение в этом мосиве и будет определять уровень слоя по принципу последний элемент верхний слой. можно реализовать функцию перемещения слоя вверх вниз. по такому принцыпу помоему построены все редакторы.

удачи в разработке былобы интересно посмотреть что получиться в итоге

Отправлено: 17:28, 26-11-2007 | #5


Старожил


Сообщения: 174
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата BlackEric:
P.S. А зачем вам это нужно, коль не секрет??? »
Да именно надо создать небольшой векторный графический редактор. Типа рисовать линии, кривые с возможностью изменять масштаб.

Как вариант есть идея создать холст, на нём рисовать, но чтоб холст, опрашивая свои объекты (линии, кривые и т.д.) сам принимал решение за то с каким контролом надо работать. Единственное что мне не очень понятно то то как организовать перерисовку нужной части холста не мучаясь с перерисовкой всего холста... Что посоветуете?

Цитата BlackEric:
P.S. А зачем вам это нужно, коль не секрет??? »
Да именно надо создать небольшой векторный графический редактор. Типа рисовать линии, кривые с возможностью изменять масштаб.

Как вариант есть идея создать холст, на нём рисовать, но чтоб холст, опрашивая свои объекты (линии, кривые и т.д.) сам принимал решение за то с каким контролом надо работать. Единственное что мне не очень понятно то то как организовать перерисовку нужной части холста не мучаясь с перерисовкой всего холста... Что посоветуете?

Отправлено: 19:42, 01-12-2007 | #6


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Если на VCL - то я бы попробовал использовать PaintBox. Там можно без особых проблем перерисовывать часть изображения.
Т.е. там можно копировать область с заданными прямоугольными координатами.

Если же нужны градиентные заливки, текстуры и прочее, то я бы смотрел в сторону OpenGL/DirectX.
Есть не плохие книги Краснова по работе с OpenGL/DX из Delphi.

-------
black-eric.livejournal.com


Отправлено: 13:16, 02-12-2007 | #7


Старожил


Сообщения: 174
Благодарности: 6

Профиль | Отправить PM | Цитировать


Ок! Спасибо всем! Буду пробовать!

Отправлено: 16:34, 02-12-2007 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Создание на Delphi компонентов с непрямоугольной областью реакции на события мыши

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - Уведомление Ист. события: HHCTRL Категория события: Отсутствует. Код события: 1903 cleric1985_n Устранение критических ошибок Windows 7 27-11-2015 16:14
Delphi - Delphi, Скрытие компонентов через INI. androidz Программирование и базы данных 4 25-05-2009 05:40
[решено] Кроссброузерное создание обработчика события benya Вебмастеру 4 21-12-2006 13:40
Создание компонентов в C++ Builder. XCodeR Программирование и базы данных 3 08-08-2005 09:41
Delphi - Delphi | События при создании формы riddler Программирование и базы данных 1 05-03-2005 13:16




 
Переход