HTML画布 - 绘图在调整大小时消失

Yog*_*wal 13 javascript html5 canvas html5-canvas

我在HTML canvas元素中创建了一个基本形状,工作正常.

当我调整画布大小时,画布中的所有绘图都消失了.这是正常行为吗?或者是否有可用于阻止此功能的功能?

解决这个问题的一种方法是在canvas调整大小上再次调用绘图函数,但是如果要绘制大量内容,这可能效率不高.

什么是最好的方式?

以下是示例代码https://gist.github.com/2983915的链接

Sim*_*ris 20

调整大小时需要重绘场景.

设置画布的宽度或高度,即使您将其设置为与以前相同的值,也不仅会清除画布,还会重置整个画布上下文.任何设置属性(fillStyle,lineWidth裁剪区域等)也将被重置.

如果您无法从表示画布的任何数据结构中重绘场景,则可以始终通过将整个画布绘制到内存中的画布,设置原始宽度以及绘制内容来保存整个画布.内存画布回到原始画布.

这是保存画布位图并在调整大小后将其放回的一个非常快速的示例:

http://jsfiddle.net/simonsarris/weMbr/


rem*_*der 5

每次调整画布大小时,它都会将自身重置为透明黑色,如规范中所定义

您必须:

  • 调整画布大小时重绘,或者,
  • 不要调整画布大小