Russian Qt Forum
Ноябрь 01, 2024, 08:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с матрицей изображений 100x100  (Прочитано 3665 раз)
excly
Гость
« : Апрель 26, 2014, 00:27 »

Добрый вечер. Есть матрица изображений 100x100 каждое из которых имеет размер 4000x4000px. Допустим это фото карты местности. Необходимо динамически подгружать необходимые в данный момент картинки(то есть те, которые в данный момент видит пользователь), плавно скроллить и масштабировать. Подскажите пожалуйста какие классы лучше всего для этого использовать и в вкратце как реализовать. Спасибо
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Апрель 26, 2014, 10:06 »

Поищите по форуму и по всему интернету: организация тайловых карт.
Очень часто применяется в игростроительстве, только размеры тайлов там поменьше.
Для Qt это можно сделать и с самостоятельным рисованием всего и с Qt Graphics Framework.
Записан
excly
Гость
« Ответ #2 : Май 06, 2014, 23:48 »

А имеет ли смысл порезать данные изображения на более мелкие? есть ли в сети примеры реализации чего-то похожего. Просто я не нашел ничего подобного
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Май 07, 2014, 10:04 »

А имеет ли смысл порезать данные изображения на более мелкие?
Нарезка на страницы выполняется в памяти (а не на диске). Примерный сценарий

- грузим всю картинку целиком
- заводим выгружаемые страницы и копируем в них тайлы
- удаляем всю картинку

Теперь при обращении к пикселю можно подгрузить нужный тайл. Работы там хватает, поэтому такой механизм используют когда необходимо иметь в данный момент любое число картинок. Если же число одновременно показываемых картинок ограничено, то гораздо проще оперировать с целыми картинками (см напр QCache)
Записан
excly
Гость
« Ответ #4 : Май 07, 2014, 14:12 »

Цитировать
Если же число одновременно показываемых картинок ограничено, то гораздо проще оперировать с целыми картинками (см напр QCache)
Больше одной картинки одновременно показываться не будет, они же большие(4000x4000px). они будут фоном, а сверху на них будут расположены другие графические элементы
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Май 08, 2014, 10:00 »

Больше одной картинки одновременно показываться не будет, они же большие(4000x4000px). они будут фоном, а сверху на них будут расположены другие графические элементы
Это всего лишь 64Мб, такая доступная память везде есть. Простейшее решение - держать в памяти только 1 картинку.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Май 08, 2014, 10:46 »

Больше одной картинки одновременно показываться не будет, они же большие(4000x4000px). они будут фоном, а сверху на них будут расположены другие графические элементы
Тайловая организация удобна для организации плавной прокруктки, например, пользователь сдвигает карту вправо, подгружается изображение которое должно появиться слева.
Рассчитывается все элементарно.

Вот ссылка на подобное обсуждение: http://www.prog.org.ru/topic_8794_0.html
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.105 секунд. Запросов: 22.