如何将HTML5 canvas上下文重置为默认值?

____

我知道如果我从头开始创建画布,可以context.save()在进行任何更改之前使用context.restore(),然后再使用它来恢复它。我的问题是:如果得到的画布已经被修改,那么甚至在使用该context.save()命令之前,如何将整个上下文重置为默认值?

海道

这是很不幸的,但是实际上您不能做到完美,因为裁剪API坏了...

所有其他属性可以设置为某个绝对值:显而易见fill/strokeStylefontshadowXXX等偶变换矩阵完全可以被设置为单位矩阵两种resetTransform()setTransform(1,0,0,1,0,0)
我们绝对不能设置的一件事是裁剪区域。为此,您必须具有一个初始名称save(),(或安装我的setClippolyfill)。
不幸的是,尽管已经多次提出要求,但一些实施者还是坚决反对setClip()在规范中加入...。

因此,在没有初始调用的情况下完全重置上下文的唯一方法save()是重置元素widthheight属性<canvas>但是,这样做还可以清除上下文中的所有当前图形,并且会杀死应用程序的内存使用量:至少在Chrome中,这样做时会分配一个新的图形缓冲区,这意味着GC必须启动以收集先前的缓冲区,其大小可能与大画布有关。将来我们应该能够调用一个reset()避免这种重新分配问题的方法,但是无论如何它仍然会清除绘图缓冲区。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章