Какой самый эффективный способ реализовать масштабирование на каирском канве? - PullRequest
5 голосов
/ 18 мая 2011

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

Я думал о них:

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

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

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

Ответы [ 2 ]

1 голос
/ 23 июня 2011

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

1 голос
/ 19 мая 2011

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

...