![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Собрал типа пазлов, где картинка разрезается на 16 частей и загружается в динамически созданные Image, вопрос такой как организовать пристыковку каждой картинки к нужному месту?
Примерно как показал на картинке- расстояние маленькое- можно стыковать. Сейчас наверно куча советов, нужно проверять у нужной имаги значения Left и Top к нужному ей "кубику" это и так понятно, как сделать это реально? Есть ли еще может какие методы? |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Только у меня один вопрос: А как стыковка должна идти? Одна часть паззла накладываться полностью на другую? Если да, то как потом ты собираешься вытаскивать ту которая окажется внизу?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Исходя из всего очевидно нужно получать имя компонента за который мы ухватили, накидал для простоты примера с шейпами:
Код:
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Stilet
Ну можно попробовать DrawGrid. Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Stilet
Как быохота и попроще и тем самым временем не так чтоб сложно было, ну вот сам проект что накидал: Код:
Далее либо FindComponent , либо Api функцию пересечения двух прямоугольников IntersectRect в примере за которую имагу я схватился я определяю, а вот как узнавать куда ее ложить? на какой шейп? Есть такая мысль что если мы схватились за имагу-1, и мы знаем что она первая, то мы и искать должны на событие имаги - MouseMove шейп-1 при помощи FindComponent верно? Самое главное как можно проще и чтоб работало. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Создал динамически шейпы в нужных местах и-
Пишу такой код на динамически созданное событие ImageMouseMove, код довольно грубый, но не в этом дело. Пока задача пристыковать имагу-1 к шейпу-1, сообщение показывает вроде все правильно Нужные прямоугольники сравнялись! но имага должна прилипнуть уже к "своему" месту, а она неприлипает. Как так сделать чтобы она уже прилипла наконец то? Код:
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Давайте метод пример-прилипания прямоугольников разберем попроще, а то на этом примере довольно сложно и вряд ли кто поможет.
Кинем на форму один компонент Shape и один компонент Image, сделаем их одинакового размера и заставим их прилипнуть друг к другу при перетаскивании Image когда их значения Left и Top сравняются. |
![]() |
![]() |
![]() |
#8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Сейчас я не могу ничего тебе сказать кроме такого примера:
Код:
Попробуй порыть в эту сторону.
I'm learning to live...
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Если я правильно понял суть проблемы, наверно нужно брать не конкретные значения, а какой-то диапазон. То есть если Top-Left отличается на 5-6 пикселей, то считать, что юзер попал и копировать нужные значения координат... Как-то так.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
![]()
Utkin
Да так и надо. Вчера накидал какой-то пример код и вроде заработал как надо, плавно подвожу картинку к нужному месту и она сама встает на место. Stilet сейчас попробую еще по вашему примеру. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пристыковка Окон | OrdJONY | Общие вопросы Delphi | 15 | 19.04.2007 12:47 |