HarmonyOS 环形渐变canvas实现方式?

如图所示组件,使用官方的Gauge组件无法隐藏下半部分白色区域,边缘无法为圆角;自行实现不知道如何绘制渐变圆弧,canvas不支持sweepRadiant;

阅读 539
1 个回答

Canvas中可以使用arc绘制隐藏下半部分白色区域

边缘圆角this.context.lineCap = ‘round’,

渐变圆弧createLinearGradient

// xxx.ets
@Entry
@Component
struct Arc {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Canvas(this.context)
        .width('100%')
        .height('100%')
        .backgroundColor('#ffffff')
        .onReady(() =>{
          this.context.beginPath()

          this.context.lineWidth = 10
          let grad = this.context.createLinearGradient(50,0, 300,100)
          grad.addColorStop(0.0, '#ff0000')
          grad.addColorStop(0.2, '#ffff00')
          grad.addColorStop(0.5, '#00ff00')
          this.context.strokeStyle = grad
          this.context.lineCap = 'round'
          this.context.arc(100, 75, 50, 3.14, 0)
          this.context.stroke()
        })
    }
    .width('100%')
    .height('100%')
  }
}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-canvasrenderingcontext2d-V5\#arc

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进