![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Можно в самом начале, при загрузке этой карты, взять ее getPixels, пробежаться по нему и составить маску для каждой страны. После чего использовать эту маску в copyPixels как alphaBitmapData.
|
|
|||||
|
Цитата:
|
|
|||||
|
Цитата:
Последний раз редактировалось miramax; 25.10.2006 в 17:45. |
|
|||||
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну тогда остаётся только threshold
![]() |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Можно скриншот, чтобы нормально все себе представить, что получается в итоге.
Выделена может быть только одна страна? |
|
|||||
|
Цитата:
и при наведении показывать этот битмап в координатах где надо? ну или в векторной форме все это делать, смотря какие исходные данные. |
|
|||||
|
Остановился на следующем решении.
Метод floodFill самый быстрый. Но вот определить места где им заливать - не просто. Так вот, перед тем как показывать картинку пользвателю нужно определить точки для floodFill из которых надо заливать. Для этого нужно создать копию юитмап даты. И делать следущее: Нашли пиксел нужного цвета, записали его координты в массив, залили floodFill, потом опять на битмапдате ищем пиксел нужного цвета заносим в массив и заливаем. Всё, теперь у нас есть массив точек , и при любом удобном случае иы можем поменять все пикселы одного цвета на любой другой цвет поочерёдно сделав floodFill для каждой точки из массива. Для определения точек под floodFill, на первом этапе работы желатьльно рекурсивно юзать getColorBoundsRect. Сначала надо получить этот прямоугольник на все битмапдате, попробовать залить центр, если пиксел в центре искомого цвета. Если после заливки размеры getColorBoundsRect не изменились - разбиваем полученный прямоугольник на четыре части и вносим каждую часть в новую битмапдату и продолжаем тестировать центры прямоугольников цветовых границ далее. Иначе последовательный перебор getPixel займёт в несколько десятков раз больше времени, т.к. заливаются довольно обширные зоны. Хотя если у вас картинка сложна, например jpg фотография, то лучше юзать getPixel ))) Время флуд фила зависит от размера заливаемой области. Конечно залить методом floodFill одноцветную битмапдату 2880 на 2880 в один цвет займёт больше времени чем применить threshold для замены цвета. Но если нужно залить 100 мелких областей на большой плоскости, то threshold проиграет, т.к. он каждый раз проверяет всю битмап дату на наличей нужных пикселов и делает много лишней работы. Последний раз редактировалось miramax; 27.10.2006 в 07:14. |
|
|||||
|
Регистрация: Nov 2005
Адрес: West_UA
Сообщений: 119
|
Сегодня шеф демонстрировал гладкий zoom & pan карты без потери качества. Скорость чуть меньше чем при сниженном _quality, но мягкость движения хорошая. Не знаю этими методами или по другому он решал задачу, но прогресс есть.
Сказал, что движек еще не универсальный, но на Рождество закончит это дело и будем менять все демонстрашки на сайте и поднимать стоимость. ![]() |
|
|||||
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|