Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt4] Ускорение работы Viewer'a


Автор: GRONN 10.9.2008, 18:39
Друзья, есть вьюер, выводящий в рабочую область картинки (типо как  thumbnail view в Windows explorer, эдакие маленькие превьюшки). Проблема такая - он очень долго работает при скроллинге - жуткие тормоза. 

Какие методы существуют для оптимизации работы такого viewera? Олее конкретно - для ускорения его работы при скроллинге?

В PaintEvent() одно из самых "дорогостоящих" действий - изменение размера картинок, чтобы подогнать их под нужный размер - может быть из-за него тормоза?

Заранее спасибо!
Алексей

Автор: powerfox 10.9.2008, 19:28
GRONN, я не помню, но кажется, по умолчанию обрабатывается вся модель. В принципе, можно сделать так, чтобы рисовалась только видимая область (точнее, создавались миниатюры только видимых картинок).

Автор: GRONN 10.9.2008, 19:41
Такую оптимизацию я воткнул (на пересечение региона перерисовки с регионом отображения) уже давно. По прежнему тормоза наблюдаются, вот ищу другие доп. способы.

UPD Вот как проверяется пересечение нужного элемента с областью перерисовки:
Код

    // это проверяется для каждого indexToDraw
    if(itemRegion(indexToDraw).intersected(regionToBeUpdated).isEmpty()) {
      continue;
    }

Может, itemRegion - слишком дорогая операция для таких целей? (у меня может быть порядка 500 первьюшек)

Автор: Любитель 10.9.2008, 19:55
Используй GraphicsView - там очень обалденная оптимизация и на порядок выше удобство работы (чем просто ручная прорисовка). В качестве примера оценки производительности - стандартная демка "40000 chips".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)