在cairo绘制的画布上实现缩放的最高效方法是什么?
我有一个 wx.ScrolledWindow
,里面用 cairo
画图。我已经实现了一个缩放功能,现在是每次缩放都重新绘制整个内容。不过因为要画的曲线可能多达200条,所以我需要考虑一个更高效的解决方案。
我想到了以下几种方法:
- 为缩放因子 -1/+1 缓存图像(这会占用很多内存)
- 使用 librsvg 来缓存一个 SVG 图像(我听说过这个。librsvg 在 Windows 上也能用吗?)
- 在绘制一组曲线后保存 cairo.Context,然后在缩放时恢复它(这只是个想法……这样做可行吗?)
还有其他的可能性吗?最好的解决方案是什么呢?
非常感谢!
2 个回答
1
如果你已经在使用双缓冲技术,那为什么不在等待新绘制的矢量图像时,先做一个快速的位图缩放作为“预览”呢?我承认我不知道怎么做这个。不过如果你能搞定,那应该是可以实现的!:)
1
这不是一个很具体的答案,但我遇到过同样的问题,所以我换用了matplotlib,这个工具里已经有了缩放和拖动的功能。不过我不太确定它的性能是否很好。我感觉我的程序在换之前运行得更流畅一些。我也试过floatcanvas和floatcanvas2,但对这两个都不是很满意。