| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > Работа с графикой и ее обновление |
| Автор: nangel 27.2.2008, 08:27 |
| Привет всем, народ поделитесь как можно засунуть картинку(карту города) в програмку. Размер карты 1153X1514. Сложность в том, чтобы НЕ разделять карту на равные части, а как-то выполнить перемещение по ней используя базовый крестик телефона?????????? После чего и нарисовать на выбранной точке другой рисунок и отправить его координаты на сервер. Может кто уже далал подобные проги, если не трудно помогите примером. Спасибо! |
| Автор: Brodyaga 27.2.2008, 09:44 | ||
Что вы хотите этим сказать и какой формат карт вы используете? |
| Автор: nangel 27.2.2008, 10:58 |
| карта в GIF формате, размеры написал. если можно, то покажите кодом со списком подключаемых библиотек. СПАСИБ!! |
| Автор: Brodyaga 27.2.2008, 13:03 |
| Что значит не разделяя карту на равные части? Всеровно придёца выдирать из неё кусок, не загружать же всю карту в память телефона.. ресурсов не хватит. |
| Автор: eugine_s 27.2.2008, 18:06 |
| Тут однозначно нужно резать карту, так как столько в память ты не сможешь использовать: 1153 * 1500 * 2 (каждый пиксель картинки в памяти занимает 2 б) = 3,5 Мб и это только под одну картинку... Нужно резать, а чтобы плавно прокрутку показывать, можно подгружать не только квадрат который отображается, но и соседние квадраты. Если схематически, то вот так: 1 2 3 4 5 6 7 8 9 5-й квадрат отображается на экране(считается, что размер квадрата равен размеру экрана (ну или размеру прямоугольника куда выводиться карта)) , а в памяти так же висят соседние квадраты 1 - 4, 6 - 9. Пусть тебе нужно двигаться в правую сторону (в направлении квадрата 6), как только сместился на половину квадрата (т.е. половина 6-го квадрата), то квадраты 1,4,7 - освободил из памяти и загрузил другие квадраты. Что-то типа такого. Но следует учитывать, что при большом размере экрана(места для отображения карты), этот алгоритм почти не сильно экономит память. Например, размер квадрата получился 176х220, тогда размер занимаемой памяти 176*220*9*2 = 700 кб, но если размер квадрата 240х320, то размер памяти = 1,3 мб - а это уже много. Тогда можно модифицировать алгоритм вот так: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 И на экране отображаются квадраты 5,6,9,10 (квадрат равен 1/4 размера экрана) При экране 176х220, память занимаемая будет равна: 44 * 55 * 16 * 2 = 77 кб (44 = 176 / 4, 55 = 220 / 4) |
| Автор: Brodyaga 28.2.2008, 10:26 |
| Да... Только перед всем этим тебе нужно разобраца со структурой формата Gif, чтобы знать как вытащить биты для нужного квадрата ;) |
| Автор: math64 28.2.2008, 11:02 |
| Не нужно разбираться в форате gif. Режешь в графическом редакторе (или пишешь программу резалку если у тебя много карт). Сохранить куски лучше в png, gif не все телефоны понимают. |
| Автор: Brodyaga 28.2.2008, 11:13 | ||
Вот поэтому то ему и нужно разобраться в GIF формате, выдирать куски байт с палитрой и выводить изображение на канву А то что ему каждую карту чтоли резать придёца в редакторе перед помещение на телефон... |
| Автор: math64 28.2.2008, 11:21 |
| Режешь не J2ME, а в J2SE или на любом другом языке, в котором есть библиотеки для работы с gif и png. А как писать такую программу нужно спрашивать в форуме по соответвующему языку. |
| Автор: nangel 28.2.2008, 13:01 |
| eugine_s, Если можно подробнее как именно это сделать.. вот я нарезал 9 квадратов 1 2 3 4 5 6 8 7 9 как программно осуществить переход по картинкам. если есть кодик, то скинь плиз.. |
| Автор: Brodyaga 28.2.2008, 13:05 |
| Вот я и говорю, что ему придёца перед тем как помещать карту в телефон, разрезать её отдельно. И так с каждой картой... А это не есть хорошо! Лучше разобраца с форматом GIF и научица доставать из него любой кусочек. |
| Автор: math64 28.2.2008, 13:45 | ||
Резать нужно на 25 квадратов (если у тебя экран 240x320) или больше (если экран меньше).
Добавлено через 5 минут и 44 секунды Brodyaga, как раз то что ты предлагаешь - ненормально. Нормально: делается шаблонное J2ME приложение с тестовой картой и пишется программа, которая режет реальную карту и подменяет ею тестовую в шаблонном приложении. |
| Автор: eugine_s 28.2.2008, 15:00 |
| nangel, квадратов всего не обязательно будет 9 штук (хотя если всего 9 штук, то смысла нет в таком методе). Квадратов может быть на много больше - N (например N = 100). Эти все квадраты ты получаешь из большой карты на компьютере, разрезав ее на маленькие квадраты (про размер этих квадратов уже писалось) и сохранив их в формате png (про gif тоже уже писали - не все телефоны его поддерживают) Из этих N квадратов, тебе нужно выбрать один квадрат - центральный и 8 его "соседей".... а уже нарисовать картинку на экране - это не сложно, math64 привел вариант как это можно сделать. |
| Автор: nangel 29.2.2008, 03:01 |
| Спасибо всем, может кто знает спец прогу для нарезки картинки на куски??? |
| Автор: eugine_s 29.2.2008, 11:04 |
| nangel, у тебя много карт или одна? Если одна, две, то можно фотошопом обойтись, если больше, то слышал что тоже можно в фотошопе сделать автомат какой-то, но это только слышал, точно не знаю. Можно самому написать программу на большой джаве. |