讨论广场 问答详情
在画布组件中,通过CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象在Canvas组件上进行绘制时调用的接口相同,另外,接口参数如无特别说明,单位均为vp。对于初学者来说,学习鸿蒙开发如何来入门比较好?
guorongcui 2026-06-28 00:15:40
29 评论 分享
harmonyos

onReady(event: () => void)是Canvas组件初始化完成时的事件回调,调用该事件后,可获取Canvas组件的确定宽度width和高度height,进一步使用CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象调用相关API进行图形绘制。怎么理解这个概念呢?

29 评论 分享
写回答
全部评论(1)

初始化画布组件

onReady(event: () => void)是Canvas组件初始化完成时的事件回调,调用该事件后,可获取Canvas组件的确定宽度width和高度height,进一步使用CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象调用相关API进行图形绘制。

Canvas(this.context)
  .width('100%')
  .height('100%')
  .backgroundColor('#F5DC62')
  .onReady(() => {
    this.context.fillStyle = '#0097D4';
    this.context.fillRect(50, 50, 100, 100);
  })

画布组件绘制方式

在Canvas组件的事件回调onReady()被调用之后,开发者可以直接使用Canvas组件进行绘制。或者可以脱离Canvas组件和onReady()生命周期,单独定义Path2D对象构造理想的路径,并在onReady()调用之后使用Canvas组件进行绘制。

  • 通过CanvasRenderingContext2D对象直接调用相关API进行绘制。
  • Canvas(this.context)
      .width('100%')
      .height('100%')
      .backgroundColor('#F5DC62')
      .onReady(() => {
        this.context.beginPath();
        this.context.moveTo(50, 50);
        this.context.lineTo(280, 160);
        this.context.stroke();
      })

2026-06-28 00:16:39