【问题标题】:Panning Html5 canvas without rerendering平移 Html5 画布而不重新渲染
【发布时间】:2012-07-13 14:54:33
【问题描述】:

我想在我的 Html5 画布上平移而无需重新渲染,平滑过渡(不跳跃)。这可能吗?有代码示例吗?

如果可能的话,这也可以用于缩放吗?

在低端系统(Windows 平板电脑)上运行时,我遇到了性能问题,其中平移只会占用过多的 CPU 并最终无法使用。范围约为 2000 个图形对象。

【问题讨论】:

    标签: html canvas panning


    【解决方案1】:

    不幸的是,你不能在不重绘的情况下变换画布;但是,如果真的只是绘制调用过多的问题,您可以渲染一次画布,缓存结果,然后在后续绘制时重绘缓存的图像。请注意,此方法无法很好地缩放超过 150%,具体取决于您绘制的实际内容。

    我做了一个小提琴,展示了这可能是什么样子:

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

    可能会有一点跳动,但总体上比without caching the image要好。

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

    【讨论】:

    • 此解决方案不适用于动态画布,这是我正在处理的,需要经常进行图像缓存的地方。否则,这听起来是个好主意。
    【解决方案2】:

    简而言之,不。如果你想在画布上平移,你必须重新绘制场景,除非你做的不好,比如使用 CSS 来限制可见的画布大小并且你的画布实际上更大。 (不要这样做,这不会提高性能)。

    但是如果你写得好的话,在平移时重绘你的画布应该很快。如果它是“跳跃的”,那么这里很可能是其他问题。

    上述方法也适用于缩放,尤其是当您希望矢量路径/文本/等进行缩放时。

    【讨论】:

    • 在平移方面是否可以进行任何优化?
    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2012-08-15
    • 2013-08-27
    • 2014-09-14
    • 2015-01-15
    • 2017-06-16
    • 1970-01-01
    相关资源
    最近更新 更多