![]() |
|
#1
|
|||
|
|||
![]() Доброго времени суток.
Суть задачи: Работа с картой. максимальный размер карты: 16160х14140 пикселей. вывод топоосновы и рисование на ней, разного типа обьектов. Реализация: Карта разбита на квадраты 8х7, в макимальном разрешении размер квадрата 2020х2020пик. в минимальном 202х202. Для масштабирования созданы карты разной степени детализации размерами 202, 404, 606, 808, 1010, 1212, 1414, 1616, 1818, 2020 пикселей, помещены в соотвествующие папки на диске. По скольку грузить целую картинку очень ресурсозатратно реализован вывод только видимой области. Прокрутка реализована посредством scrollbar получаем позицию ползунка и вычисляем диапазон видимой области. Код:
Все работает, но не удовлетворяет скорость отображения и прокрутки карты. Вопрос: В каком направлении копать для оптимизации, или может стоит выбрать совсем другой подход? Последний раз редактировалось Admin, 14.02.2016 в 19:13. |
#2
|
||||
|
||||
![]() можно хранить в память сформированный участок карты, по размерам превосходящий видимый участок, например в два раза (по ширине и высоте), при перемещении вырезать из этого участка выводимый кусок и его отображать, а в памяти формировать новый участок, содержащий выводимый участок и также его превосходящий по размерам, в этом случае отображение фактически занимает время копирования из памяти на канву + формирование участка в памяти, что значительно меньше, чем напрямую отображать
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard ![]() |
#3
|
|||
|
|||
![]() Если в видимую область попало схождение 4 квадратов 2020х2020 пикс. то прийдется в памяти держать 4 полновесные картинки, в bmp формате которые занимают порядка 50 mb каждая - для слабых компютеров - оч ресурсозатратно
|
#4
|
||||
|
||||
![]() а если при текущем положении дел в выводимую область попало это же самое вхождение?
я писал о том, чтобы то, что делается сейчас строить предварительно в памяти и затем выводить Понять, что хочет заказчик - бесценно, ведь он платит MasterCard ![]() |