无需重新渲染即可平移Html5画布

时间:2012-07-13 18:01:39

标签: html5 canvas panning

我想在平滑过渡(不是跳跃)的情况下平移我的Html5画布而不必重新渲染。这可能吗?有代码示例吗?

如果可能,这还可以应用于缩放吗?

在低端系统(Windows平板电脑)上运行时出现性能问题,其中平移只占用太多CPU并最终无法使用。范围是〜2000个图形对象。

2 个答案:

答案 0 :(得分:7)

不幸的是,如果没有重绘它,你就无法转换画布;但是,如果真的只是有太多的绘制调用,你可以渲染一次画布,缓存结果,然后在随后的绘制中重绘缓存的图像。请注意,根据您绘制的实际内容,此方法实际上不会超过150%。

我制作了一个小提琴,展示了这可能是什么样的:

http://jsfiddle.net/mobidevelop/sBvab/

可能会有一点跳跃,但它通常比without caching the image更好。

您的里程可能会有所不同。

答案 1 :(得分:0)

简而言之,没有。如果要在画布上进行平移,则必须重新绘制场景,除非您执行的操作不好,例如使用CSS限制可见的画布大小并且画布实际上更大。 (不要这样做,这不是性能提升)。

但是,如果你已经写好了,那么在你平移的时候重绘你的画布应该很快。如果它是"跳跃",那么赔率是其他的错误。

以上情况也适用于缩放,特别是如果您希望矢量路径/文本/等可以缩放。