我使用globalCompositeOperation ='copy'然后使用drawImage,以便我的新图像替换下面的图像。
这适用于Mac和Windows以及iPad上的最新Safari和Chrome浏览器。
它在IE 9中不起作用,虽然它在Firefox 3.6中有效,但它在Firefox 4.0中不起作用。
当它不工作时似乎发生的是整个画布被擦除,而不仅仅是我传递给drawImage的矩形区域。
我认为这是IE 9和firefox 4.0中的一个错误,但我不应该期望它能够正常工作吗?
答案 0 :(得分:1)
这些是Mozilla假设Canvas应该起作用的图像:
问题在于规范在这里写得相当模糊。例如,对于复制复合类型,它显示为:
Display the source image instead of the destination image.
可以将其视为源代码的同义词,或者可以理解为“清除整个画布然后将新的绘图操作复制到画布上”
要了解不同浏览器的实现方式有何不同,请使用上面mozilla提供的图像,以及Mozilla提供的所有不同复合形状的实时触发(不是图像,画布):
https://developer.mozilla.org/samples/canvas-tutorial/6_1_canvas_composite.html
快速浏览一下,Chrome 11似乎不同意Firefox 4在源内,源外,目的地,目的地顶部,深色和复制方面的不同。
一目了然,值得注意的是,所有差异都与是否应该清除不相关的像素有关。 Mozilla似乎这么认为,Google没有。
答案 1 :(得分:1)
当您使用带有globalCompositeOperation =“copy”的drawImage()时,意外的是在目标矩形之外清除画布。但这似乎是如何解释标准的共识。即使使用fillRect()或绘制线条,也会清除整个画布。您必须设置剪裁区域以防止这种情况。
有关讨论,请参阅:https://bugzilla.mozilla.org/show_bug.cgi?id=366283