# 合成

在之前的例子里面,我们总是将一个图形画在另一个之上,对于其他更多的情况,仅仅这样是远远不够的。比如,对合成的图形来说,绘制顺序会有限制。不过,我们可以利用 globalCompositeOperation 属性来改变这种状况。

我们不仅可以在已有图形后面再画新图形,还可以用来遮盖指定区域,清除画布中的某些部分(清除区域不仅限于矩形,像clearRect()方法做的那样)以及更多其他操作。

ctx.globalCompositeOperation = type
  • source-over 这是默认设置,并在现有画布上下文之上绘制新图形。
  • source-in 新图形只在新图形和目标画布重叠的地方绘制。其他的都是透明的。
  • source-out 在不与现有画布内容重叠的地方绘制新图形。
  • source-atop 新图形只在与现有画布内容重叠的地方绘制。