Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2008, 15:12   #1
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию Создание динамичной схемы

Не могу понять, как реализуется механизм привязки, например, линий к точкам. Допустим, у нас есть две точки, связанные линией. При перетаскивании одной точки, линия должна следовать за ней.
как это сделано?
rocklistener...
5naip вне форума Ответить с цитированием
Старый 20.12.2008, 20:20   #2
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Вы про canvas что-нибудь знаете?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 20.12.2008, 21:39   #3
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

знаем
но я не знаю,как там,к примеру, двигать узлы схемы...(т.е. нажал мышью на нем и потащил.)
rocklistener...
5naip вне форума Ответить с цитированием
Старый 20.12.2008, 23:11   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Нет там никаких узлов. Нужно самому делать. Узел - объект, точки на другом конце - поля этого объекта. При перетаскивании нужно перерисовывать линии между узлом и его точками.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.12.2008, 01:16   #5
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

это ясно что нет узлов. Это относительно схемы его так назвал. Вот объясните,как это все нарисовать?
Пусть это будет схема -
Код:
О--------------------О
Как создается левая точка? просто рисуется маленький кружок а канвасе?Как его тогда перемещать по движению курсора?
rocklistener...
5naip вне форума Ответить с цитированием
Старый 21.12.2008, 09:48   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

В событии MouseDown проверять входит ли курсор в один из узлов. Если входит, ставим флаг захвата узла (объявить заранее, глобальный) в true.
По MouseUp сбрасываем флаг.
В событии MouseMove проверяем флаг, если true, то тянем узел за мышью. Что значит тянем, стираем его и русуем в новом месте, в месте курсора, при этом перерисовываем все связанные с ним линии.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.12.2008, 13:07   #7
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

вот например я точку вот так нарисовал :
Код:
form2.Image1.Canvas.Ellipse(x-3,y-3,x+3,y+3);
x,y - соответственно координаты мыши на тот момент.
как мне теперь обратиться именно к этому кружочку? Их может быть и под сотню...
или просто создать массив, каждая строка которого будет характеризовать отдельный кружок?
а события MouseDown, MouseUp, MouseMove будут определяться для Image1?
rocklistener...
5naip вне форума Ответить с цитированием
Старый 21.12.2008, 18:47   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
или просто создать массив, каждая строка которого будет характеризовать отдельный кружок?
Да, примерно так, только простым массивом кружков не обойтись, нужно вместе с кружком хранить его связи. Тут либо запись сделать, либо класс, как удобнее. И потом в массив их.
Хитрость в том, что они потом друг на друга будут указывать, и перерисовываться линии по многу раз одни и те же будут, можно так оставить, а можно избавиться от этого, флаги добавить в запись, или массив линий еще сделать и в нем отмечать какую уже перерисовали.
Цитата:
а события MouseDown, MouseUp, MouseMove будут определяться для Image1?
Для чего угодно, если рисуете в Image, то для него.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 21.12.2008 в 18:51.
mutabor вне форума Ответить с цитированием
Старый 21.12.2008, 20:32   #9
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

все,спасибо. Я все уяснил
просто думал есть какие-то стандартные функции/компоненты....а оказывается все ручками.
rocklistener...
5naip вне форума Ответить с цитированием
Старый 07.01.2009, 14:14   #10
lyjj1229
Заблокирован
 
Регистрация: 06.01.2009
Сообщений: 2
По умолчанию ?????

???????????????CHEAP SHIRTSCHEAP HANDBAGSREPLICA HANDBAGSCOACH BAGSWHOLESALE T SHIRTS
lyjj1229 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с составлением БЛОК СХЕМЫ kiko Паскаль, Turbo Pascal, PascalABC.NET 1 28.11.2008 11:35
Блок-схемы в Word Monkey Microsoft Office Word 5 10.11.2008 20:33
Q-схемы, помогите скомпилировать. NiganInterCOM Общие вопросы Delphi 2 04.02.2008 20:08
про блок-схемы Maloyter Помощь студентам 7 29.11.2007 06:52
Перенос данных из схемы в схему Гришас БД в Delphi 0 22.03.2007 16:03