Форум: "Потрепаться";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизДеление изображения на области Найти похожие ветки
← →
DProg (2003-08-20 16:28) [0]Доброго времени суток.
Поставили задачу, хочу посоветоваться:
1. Пользователь видит на экране картинку. Картинка разделена на отдельные области. Например географическая карта, на которой несколько стран. При перемещении мышки пользователь видит хинт страны над которой находится мышка. При щелчке на стране открывается новое окно с описанием этой страны.
2. Картинки (карты), описания могут добавляться.
3. Описания картинок, границ стран, описаний стран хранятся в произвольном формате.
Не подскажете, нет ли каких либо средств (компонентов) для Delphi, которые помогут это реализовать?
← →
Vlad Oshin (2003-08-20 16:36) [1]первое что приходит в голову - регионы
CreatePolygonRgn
CombineRgn
← →
Jeer (2003-08-20 16:37) [2]Второе, что приходит в голову - ГИС-ы.
← →
y-soft (2003-08-20 16:43) [3]Или так, как сказал Vlad Oshin © (20.08.03 16:36) [1], или нечто подобное, но без создания регионов: создается не одна, а 2 картинки (вторая в памяти), на 2-й картинке области выводятся каждая своим уникальным цветом, затем отлавливается положение курсора на первой картинке и проверяется по координатам цвет точки на второй картинке...
При большом количестве стран, такой подход работает быстрее (но и памяти кушает больше)
← →
DProg (2003-08-20 16:48) [4]Если нет компонентов, то начать наверное надо с мыслей о редакторе для создания описания регионов. Надо показать пользователю карту и чтобы он последовательно каждую страну обвел... По MouseMove сохранять координаты?
← →
DProg (2003-08-20 16:50) [5]Как понять что он обвел всю страну? Ну, что получилась замкнутая область?
← →
y-soft (2003-08-20 16:53) [6]>DProg (20.08.03 16:50) [5]
А если страна с анклавами (как ЮАР) или состоит из нескольких несвязанных частей (как пример - США)?
← →
DProg (2003-08-20 16:58) [7]> y-soft
Ну это уже тонкости... Сделаем операцию добавления области к стране. На самом деле у меня не страны, но на странах просто удобно обсуждать.
И еще: Наверное имеет смысл хранить не все точки, о снимать координаты по таймеру через определенный промежуток времени?
← →
alxx (2003-08-20 17:01) [8]Я примерно этим сейчас занимаюсь. Рабочая редактора уже готова. Щелчок на полигоне отлавливается хорошо.
← →
y-soft (2003-08-20 17:02) [9]DProg (20.08.03 16:58) [7]
Лучше сохранять по нажатию кнопки "ОК". Фигуру замыкать принудительно, если координаты начальной и конечной точки не совпадают.
Можно хранить не точки, а сразу изображения (как я писал ранее)...
← →
DProg (2003-08-20 17:02) [10]Можно посмотреть?
← →
DProg (2003-08-20 17:06) [11]> alxx
Можно посмотреть?
> y-soft
>Фигуру замыкать принудительно...
Да, действительно! Спасибо.
А изображения хранить накладно, к тому же надо будет это писать в базу. С помощью таймера можно будет минимизировать количество точек с требуемой точностью. Предположим, что все мышкой двигают примерно с одной скоростью.
← →
alxx (2003-08-20 17:08) [12]> DProg
Если качну тебе проект - меня уроют. Могу попробовать сбацать демку для, скажем, трех полигонов...
← →
y-soft (2003-08-20 17:15) [13]>DProg (20.08.03 17:06) [11]
Если хранить в WMF, то не очень-то и накладно.
Вообще, если количество точек мало, то выгодней хранить координаты (или, что почти то же самое, в векторном формате) и проверять по нахождению точки в регионе.
А если точек много, то выгодней хранить сжатый растр (gif например) и определять по цвету точки...
← →
DProg (2003-08-20 17:23) [14]Буду хранить координаты. Будут две связанные таблицы - страны и координаты границ страны.
Еще вопрос. Как потом быстро определить, над каким из регионов находится мышка, если известны координаты границы регионов?
← →
alxx (2003-08-20 17:28) [15]Определять по цвету точки - нехороший способ. Нужно хранить буфер какой-то. Рисовать два раза или таблицу цветов держать.
А мат. способ проверки попадания в полигон можно реализовать с минимумом операций (с одним целочисленным умножением и одним целочисленным делением на одну вершину).
Если полигоны хранятся в таблице БД, то о приемлемой скорости рисования можно забыть (хотя если до ста полигонов, то может быть нормально).
← →
y-soft (2003-08-20 17:28) [16]>DProg (20.08.03 17:23) [14]
PtInRegion
Но еще раз подчеркну, что регионы штука тяжеловесная и ресурсоемкая...
← →
y-soft (2003-08-20 17:30) [17]>alxx © (20.08.03 17:28) [15]
У каждого способа своя область применения...
← →
alxx (2003-08-20 17:50) [18]> y-soft
Эт точно :)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c