Каков наиболее эффективный способ реализовать масштабирование на нарисованном в Каире холсте?
У меня есть wx.ScrolledWindow
где рисуется при использовании cairo
, Я реализовал функцию масштабирования, которая сейчас перерисовывает весь контент. Но поскольку будет нарисовано до 200 кривых, я должен рассмотреть более эффективное решение.
Я думал об этом:
- Буферизация изображений для коэффициентов масштабирования -1/+1 (потребление памяти)
- Использование librsvg и буферизация образа SVG (я читал кое-что об этом. Работает ли librsvg и под Windows?)
- Сохранение cairo.Context после рисования групп кривых и восстановления масштаба при увеличении (просто идея... это возможно?)
Есть ли другие возможности, и: какое решение лучше?
большое спасибо
2 ответа
В любом случае, если вы используете двойную буферизацию, почему бы не сделать быстрый растровый масштаб в качестве "предварительного просмотра" в ожидании нового перерисованного векторного изображения? Признаюсь, я не знаю, как это сделать. Но если ты можешь заставить это работать, это должно работать!:)
Не совсем конкретный ответ на ваш вопрос, но я столкнулся с той же проблемой и просто переключился на matplotlib, где уже реализована функция масштабирования и панорамирования. Я не уверен, хотя, если это супер исполнитель. У меня такое чувство, что раньше моя программа работала более плавно. Я также попробовал floatcanvas и floatcanvas2, но был не очень доволен ими обоими.