|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.08.2008, 21:57 | #11 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,520
|
А в матрице что собственно храниться будет? Насколько лёгким будет поиск по матрице нужного дома по адресу?
ЗЫ. с масштабированием кусков растра я бы не стал связываться. Как бы там картинка не "поплыла" |
17.08.2008, 22:05 | #12 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Если масштабировать в минус, не поплывет ) p.s. Поиск будет сначала не в матрице а в массиве адресов, по индексу найденного адреса будем иметь значение ячейки к-рую искать.
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; 17.08.2008 в 22:11. |
|
17.08.2008, 22:23 | #13 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,520
|
Я аж сам заинтерисовался как сделать лучше. Матрица мне не нравится тем, что для большой карты она будет много места занимать. Хотя в принципе можно матрицу меньше сделать, чтобы 1 элемент был на 4 точки карты. Всёравно пользователь с точностью до пикселя метиться не будет. Но в принципе этот вариант подойдёт и для "моих" картинок. В плане больших возможностей расширения я у матрицы ничего не вижу. так же идет 1 точка - 1 объект.
Для цветных картинок можно приплести БД с двумя таблицами: 1) Объекты (ID_объекта, Адрес,...) 2) КускиКартинок (ID_куска, цвет, ID_объекта) Соответственно не так уже проблематично будет по адресу найти кусок, на котором изображен дом. Ну Адреса можно вынести в некий КЛАДР. Да и картинки все при желании можно в БД засунуть, так что всю чёрную работу будет СУБД выполнять. Хотя хз как это будет в реальности работать |
18.08.2008, 01:12 | #14 |
Пользователь
Регистрация: 25.05.2007
Сообщений: 69
|
а как можно реализовать эту матрицу? А то я с этим ещё не сталкивался, и чесно сказать теперь меня это зацепило!!!!))) Теперь полюбому нужно сделать эту карту, заодно и разберусь!!!
Вот нашёл статейку про GIS компоненты. Говорят, что разобраться сложно, но если разберёшься, то будет проще чем с image! Может кто слышал об этих компонентах? Или проще не заморачиваться и делать своими силами? По поводу перетаскивания решил уже!!! Правда, нетрадиционным методом: В Panel поместил Image, и загружаю сразу всю картинку, а видно только то, на сколько позволят размер Panel!!! посмотрим как оно получиться. Осталось только с матрицей разобраться))))) Help me!!! Последний раз редактировалось Stilet; 15.06.2011 в 17:23. |
18.08.2008, 23:30 | #15 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
zzzzz, не пости несколько сообщений подряд, пользуйся кнопкой "Правка"
По поводу программы. Хочу сразу заметить я не гуру в ГИС, просто я напишу как я бы решил такую задачу. Компоненты готовые можно конечно использовать, но так ничему не научишься. Убирай все панели с имиджами, тебе для отображения понадобится один компонент - TPaintBox. Кинь его на форму, найди ему место и все, пока с ним больше ничего делать не надо. Теперь с картой, каких она размеров? Справка: 1 пиксель несжатого растра в 24-х битном цвете занимает в памяти 3 байта. Если карта большая, подели ее на куски, а то памяти может и не хватить, да и грузить систему будет. К примеру 1600х1200 будет занимать 5,7 МБ, 2000х3000 уже 18МБ. Вобщем смотри сам, если не сильно большая можно не делить. Или она у тебя векторная? Это многое меняет. Пока буду объяснять для растровой. Матрица. Обычный двумерный массив, тип cardinal не самый экономный, но и домов в городе много. Код:
Кроме матрицы еще понадобится массив адресов, это одномерный массив строк. На время работы программы его лучше для удобства грузить в TStringList. Вот его примерное содержание Цитата:
Теперь вернемся к графике. Грузим карту в TBitmap будем считать что она не сильно большая и грузим целиком. Важный параметр - координаты верхего левого угла. Меняя его координаты (они почти всегда будут в минусе, т.е. меньше нуля) и будем делать перетаскивание. Для перетаскивания нужно создать переменую Код:
Формула для перевода координат из пикселей в ячейки матрицы cx:=(x + sx) div cell; cy:=(y + sy) div cell; где cx, cy - координаты ячейки x, y - координаты в пикселях полученные с PaintBox sx, sy - сдвиг карты влево и вверх cell - ширина ячейки Чтобы в PaintBox картинка не пропадала, нужно перерисовывать его по его событию OnPaint. Это чтобы не пропала при сворачивании и т.п., а рисовать в нем нужно так: Код:
x,y - координаты л.в. угла MapBM - TBitmap, содержащий карту. Это в принципе все, достаточно подробно, я считаю. Если какие-то детали неясны, поиск по массиву, или работа с событиями мыши, это отдельные вопросы, в нэте и в частности здесь на формуме обсуждались многократно. Предварительное заполнение массивов - массива адресов и затем матрицы, самое трудоемкое из всей работы. Для матрицы неплохо бы редактор написать (как редактор карт в играх) упрощающий заполнение, кто любит работать руками, может вручную заполнять =)
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)
Проверь себя! Онлайн тестирование | Мой блог |
|
15.06.2011, 06:03 | #16 |
Новичок
Джуниор
Регистрация: 14.06.2011
Сообщений: 2
|
Доброго всем времени суток, а как в коде это запечатлить? нужно очень ребят!
|
15.06.2011, 15:19 | #17 |
Форумчанин
Регистрация: 18.12.2008
Сообщений: 266
|
zzzzz, вот это посмотрите, может , чего
полезного найдете. http://www.delphisources.ru/pages/so...paint-box.html Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Карта города | Vadimok | Общие вопросы Delphi | 4 | 26.08.2008 17:36 |
Звуковая карта | SunKnight | Win Api | 3 | 23.12.2007 23:44 |
Карта области | Dmitriy77 | Общие вопросы Delphi | 0 | 23.10.2007 18:46 |
Карта города 2 | Archangel | Помощь студентам | 3 | 04.03.2007 05:19 |