Каков наиболее эффективный способ реализовать масштабирование на нарисованном в Каире холсте?

У меня есть wx.ScrolledWindow где рисуется при использовании cairo, Я реализовал функцию масштабирования, которая сейчас перерисовывает весь контент. Но поскольку будет нарисовано до 200 кривых, я должен рассмотреть более эффективное решение.

Я думал об этом:

  • Буферизация изображений для коэффициентов масштабирования -1/+1 (потребление памяти)
  • Использование librsvg и буферизация образа SVG (я читал кое-что об этом. Работает ли librsvg и под Windows?)
  • Сохранение cairo.Context после рисования групп кривых и восстановления масштаба при увеличении (просто идея... это возможно?)

Есть ли другие возможности, и: какое решение лучше?

большое спасибо

2 ответа

В любом случае, если вы используете двойную буферизацию, почему бы не сделать быстрый растровый масштаб в качестве "предварительного просмотра" в ожидании нового перерисованного векторного изображения? Признаюсь, я не знаю, как это сделать. Но если ты можешь заставить это работать, это должно работать!:)

Не совсем конкретный ответ на ваш вопрос, но я столкнулся с той же проблемой и просто переключился на matplotlib, где уже реализована функция масштабирования и панорамирования. Я не уверен, хотя, если это супер исполнитель. У меня такое чувство, что раньше моя программа работала более плавно. Я также попробовал floatcanvas и floatcanvas2, но был не очень доволен ими обоими.

Другие вопросы по тегам