|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2011, 11:27 | #1 |
Регистрация: 08.06.2011
Сообщений: 9
|
Перемещение Timage
День добрый. По форме двигаю несколько image, так же по ходу создаю их и удаляю. Как сделать, чтобы они натыкались друг на друга и не перекрывались. Спасибо
|
13.12.2011, 12:45 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Проверять на пересечение двигаемый со всеми остальными.
Left, Top - координаты верхнего левого угла; Width, Height - ширина и высота. E-Mail: arigato.freelance@gmail.com
|
13.12.2011, 13:13 | #3 |
Регистрация: 08.06.2011
Сообщений: 9
|
Да это я сообразил. Не могу понять как это организовать. Получается что то замудренное. Если сравнивать положение объекта с каждым из существующих, то на каком то этапе (когда их станет слишком много) программа начнет жутко тормозить.
|
13.12.2011, 13:19 | #4 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
использовать лучше один имидж как поле а на нём отрисовывать объекты например TBitMap а ещё лучще создать массив TBitMap
|
13.12.2011, 13:20 | #5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Много - это сколько? Сделать 1000 сравнений для компьютера не проблема.
E-Mail: arigato.freelance@gmail.com
|
13.12.2011, 15:10 | #6 |
Регистрация: 08.06.2011
Сообщений: 9
|
Понял. Халявы не будет. Ок.Тогда подскажите, накидал вот это:
Код:
И с одним объектом нормально, а когда их i тое к-во ошибка. |
21.12.2011, 19:35 | #7 |
Пользователь
Регистрация: 17.05.2011
Сообщений: 24
|
все таки советую прислушаться к SERG1980 и сделать примерно как тут http://forum.sources.ru/index.php?sh...&#entry2001377
|
21.12.2011, 22:21 | #8 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 53
|
Посмотрел код- естественно только по одной координате работает, потому что только left ему меняешь,
я бы так написал: b1:=TImage(Sender).Left-r[i].Left<r[i].Width; b2:=TImage(Sender).Top-r[i].Top<r[i].Height; if b1 then TImage(Sender).Left:=r[i].Left-r[i].Width; if b2 then TImage(Sender).Top:=r[i].Left-r[i].Width; b1 и b2 boolean, да и проверку на внешние границы тоже стоит переделать
Герои меча и магии собственного производства http://invizor007.000webhostapp.com/...1/hi_v1_3a.rar
Личный сайт http://invizor007.000webhostapp.com/ |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перемещение в БД | Михаил Юрьевич | Общие вопросы Delphi | 3 | 02.10.2011 01:14 |
перемещение ярлыков | NiCola999 | Общие вопросы C/C++ | 9 | 02.07.2010 00:27 |
Перемещение объектов | _-Re@l-_ | Общие вопросы Delphi | 10 | 17.06.2010 12:12 |
Перемещение TImage | LexaBeliy | Общие вопросы Delphi | 11 | 15.09.2009 03:22 |
Перемещение TImage | Романнн | Общие вопросы Delphi | 1 | 27.10.2008 18:38 |