Как я могу реализовать Google Q-подобную прокрутку тайлов в Qt? - PullRequest
6 голосов
/ 10 февраля 2010

Я использую Qt / C ++ и пытаюсь нарисовать большой и сложный QGraphicsScene. Как только я добавляю много объектов, панорамирование и масштабирование становятся неприятно медленными. (Не удивительно, конечно). Я играл с кэшированием координат устройства (помогает с панорамированием до точки) и минимальными обновлениями области просмотра и т. Д., Но в итоге слишком много объектов. То, что я хотел бы сделать, это рисовать элементы асинхронно из-за управления пользовательским интерфейсом. Другими словами, как и в случае с Картами Google, я хочу выполнять панорамирование и масштабирование, позволяя рисованию ускоряться настолько быстро, насколько это возможно, но для возможности повторного панорамирования до завершения рисования элементов.

Один из способов, который я пытаюсь сделать, - создать два QGraphicsScenes. У одного есть реальные объекты, но он не привязан к QGraphicsView. Другой QGraphicsScene подключен к QGraphicsView, но у него просто есть несколько плиточных QPixmaps, размер которых соответствует размеру экрана. План состоит в том, чтобы использовать свободные циклы ЦП для обновления любого растрового изображения плитки, в котором оно нуждается. Похоже, что это даст мне необходимый контроль над рендерингом (поэтому мне не нужно блокировать при повторном рендеринге всей видимой сцены). Мысли? Кто-нибудь реализовал это?

1 Ответ

3 голосов
/ 10 февраля 2010

Взгляните сюда: Генерация контента в темах .

Похоже, это похоже на то, что вы пытаетесь сделать. Механизмы листов являются очень распространенными способами загрузки больших объемов данных. Кроме размещенной ссылки, я не видел простого примера использования QGraphicsView.

40000 Chips также показывает некоторые аспекты управления большими объемами данных.

...