Делается просмоторщик специфического векторного формата на Python + GTK. Все рисуется средствами cairo на DrawingArea.
Нужен почти бесконечное масштабирование и навигация по картинке.
Как правильно делать отрисовку чтобы не тормозило? Я вижу варианты: 1. Рисовать прямо на экран, выкидывая объекты, которые не видны. 2. Отрисовка всего в большой заэкранный буффер и перенос содержимого на экран. При масштабировании перерисовывать все заново. Проблема - размер картинки при крупном увеличении может быть большим. 3. Как 2, но отрисовывать видимую часть + еще немного по краям.
Сейчас все просто рисуется в expose_event() и в зависимотри от увеличения отрисовка занимает 0.05 - 0.1 сек, что не критично для демо, но для работы медленно.
Как это сделать правильно? Как это делают всякие CAD-ы?