互联网浏览器10的画布裁剪出现意外行为

5
在一个HTML5画布应用中,我使用剪辑来重新绘制画布上受损的部分,代码如下:
ctx.beginPath();
ctx.rect(30, 30, 100, 100);
ctx.rect(100, 100, 100, 100);
ctx.clip();
ctx.clearRect(0, 0, 600, 400);

我还创建了一个演示,说明了问题。在除IE10之外的所有现代浏览器上,它将显示两个重叠的黑色矩形。

现在的问题是,这是否是IE10的bug,还是因为它更严格地遵循标准,实际上是预期行为,并且只是在其他浏览器中运行的幸运?如果是这样的话,那么正确的做法是什么呢?

3个回答

2

解决IE10显然的bug的一种可能方法是逐个清除矩形。其中一个优点是更快,因为它不需要设置剪辑。


这实际上是真的。感谢您提供这个信息。但是,一旦您有一个非矩形的剪辑区域,例如三角形,它仍然无法正常工作,因此这个问题仍然是一个令人讨厌的错误! - vight morris

1
你需要在结尾处调用ctx.fill();

不,我想清除这部分以重新绘制它,例如使用一些drawImage调用重叠损坏区域的图像,但不应在剪辑区域外绘制。清除(也不重新绘制)是不可能的,因为IE10不像其他浏览器那样剪辑区域。 - vight morris

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接