在微信小程序的 Canvas 绘图中,globalCompositeOperation 是一个用于设置全局合成操作的属性。这个属性决定了新绘制的内容如何与已有的内容合成。

以下是一个简单的示例,演示了如何使用 globalCompositeOperation 属性:
Page({
  onReady: function () {
    const ctx = wx.createCanvasContext('myCanvas');

    // 绘制一个红色矩形
    ctx.setFillStyle('red');
    ctx.fillRect(20, 20, 150, 100);

    // 设置 globalCompositeOperation 属性
    ctx.setGlobalCompositeOperation('destination-over');

    // 绘制一个蓝色圆形,位于红色矩形下方
    ctx.setFillStyle('blue');
    ctx.beginPath();
    ctx.arc(120, 70, 50, 0, 2 * Math.PI);
    ctx.fill();
    ctx.closePath();

    // 绘制到 canvas 上
    ctx.draw();
  }
});

在这个示例中,我们首先使用 setFillStyle 和 fillRect 绘制了一个红色的矩形。然后,使用 setGlobalCompositeOperation 设置了 destination-over,这表示新绘制的内容会在已有内容下方绘制。最后,通过 setFillStyle、beginPath、arc、fill 绘制了一个蓝色的圆形,它位于红色矩形的下方。

globalCompositeOperation 还支持其他的合成操作,例如:
  •  source-over(默认值):新绘制的内容在已有内容上方绘制。

  •  source-in:新绘制的内容仅在已有内容的非透明部分绘制。

  •  source-out:新绘制的内容仅在已有内容的透明部分绘制。

  •  source-atop:新绘制的内容会覆盖已有内容,但只在非透明部分绘制。

  •  destination-over:新绘制的内容在已有内容下方绘制。


你可以根据需要选择不同的合成操作。


转载请注明出处:http://www.zyzy.cn/article/detail/1010/微信小程序