渲染

__render(canvas: ILeaferCanvas, options: IRenderOptions): void

完全重写渲染方法。

以下为默认的渲染函数:首先会检测是否需要绘制,再设置画布的 transform, 之后调用 __draw()方法进行本地绘制

__render(canvas: ILeaferCanvas, options: IRenderOptions): void {
  if (this.__worldOpacity) { // 通过 opacity、visible 自动计算的结果
    canvas.setWorld(this.__world, options.matrix)
    canvas.opacity = this.__worldOpacity
    this.__draw(canvas, options) // canvas.context
  }
}

可通过 canvas.context直接访问 canvas 2D 的 上下文

__draw(canvas: ILeaferCanvas, options: IRenderOptions): void

仅重写绘制方法,基于本地坐标绘制。

以下为绘制函数示例:先绘制路径,之后再填充、描边。

__draw(canvas: ILeaferCanvas, options: IRenderOptions): void {
  this.__drawRenderPath(canvas)

  const { fill, stroke } = this.__
  if (fill) Paint.fill(this, canvas, fill)
  if (stroke) Paint.stroke(this, canvas, stroke)
}