HarmonyOS 如何绘制实心圆,DrawingRenderingContext可以吗?

HarmonyOS 如何绘制实心圆,DrawingRenderingContext可以吗?

HarmonyOS
2024-11-27 10:27:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

参考代码:

@Entry 
@Component 
struct CircleByOneHeart { 
  @State currentCenterColor: string = '蓝色' 
  @State currentUpColor: string = '蓝色' 
  @State currentDownColor: string = '蓝色' 
  @State currentLeftColor: string = '蓝色' 
  @State currentRightColor: string = '蓝色' 
  private countDown: number = 0; //设置一个flag,用来接受定时器,可以看作定时器实体 
 
  aboutToDisappear(): void { 
    clearTimeout(this.countDown) //销毁定时器 
  } 
 
  build() { 
    Row() { 
      Column({ space: 100 }) { 
        //画一个直径为90的同心圆 
        Column() { 
          Line({ 
            //上 
            width: 10, 
            height: 20 
          }) 
            .startPoint([5, 0]) 
            .endPoint([5, 20]) 
            .strokeWidth(10) 
            .position({ x: 45, y: 5 }) 
            .stroke(this.currentUpColor == '蓝色' ? Color.Blue : Color.Red) 
            .onClick(() => { 
              if (this.currentUpColor == '蓝色') { 
                this.currentUpColor = '红色' 
              } else { 
                this.currentUpColor = '蓝色' 
              } 
              this.countDown = setTimeout(() => { 
                this.currentUpColor = '蓝色' 
              }, TimeSetting.stayTime) //设置定时器时间以及处理事件 
            }) 
          Line({ 
            //下 
            width: 10, 
            height: 20 
          }) 
            .startPoint([5, 0]) 
            .endPoint([5, 20]) 
            .strokeWidth(10) 
            .position({ x: 45, y: 75 }) 
            .stroke(this.currentDownColor == '蓝色' ? Color.Blue : Color.Red) 
            .onClick(() => { 
              if (this.currentDownColor == '蓝色') { 
                this.currentDownColor = '红色' 
              } else { 
                this.currentDownColor = '蓝色' 
              } 
              this.countDown = setTimeout(() => { 
                this.currentDownColor = '蓝色' 
              }, TimeSetting.stayTime) //设置定时器时间以及处理事件 
            }) 
          Line({ 
            //左 
            width: 20, 
            height: 10 
          }) 
            .startPoint([0, 5]) 
            .endPoint([20, 5]) 
            .strokeWidth(10) 
            .position({ x: 5, y: 45 }) 
            .stroke(this.currentLeftColor == '蓝色' ? Color.Blue : Color.Red) 
            .onClick(() => { 
              if (this.currentLeftColor == '蓝色') { 
                this.currentLeftColor = '红色' 
              } else { 
                this.currentLeftColor = '蓝色' 
              } 
              this.countDown = setTimeout(() => { 
                this.currentLeftColor = '蓝色' 
              }, TimeSetting.stayTime) //设置定时器时间以及处理事件 
            }) 
          Line({ 
            //右 
            width: 20, 
            height: 10 
          }) 
            .startPoint([0, 5]) 
            .endPoint([20, 5]) 
            .strokeWidth(10) 
            .position({ x: 75, y: 45 }) 
            .stroke(this.currentRightColor == '蓝色' ? Color.Blue : Color.Red) 
            .onClick(() => { 
              if (this.currentRightColor == '蓝色') { 
                this.currentRightColor = '红色' 
              } else { 
                this.currentRightColor = '蓝色' 
              } 
              this.countDown = setTimeout(() => { 
                this.currentRightColor = '蓝色' 
              }, TimeSetting.stayTime) //设置定时器时间以及处理事件 
            }) 
          Button('确定') 
            .width(50) 
            .height(50) 
            .type(ButtonType.Circle) 
            .position({ x: 25, y: 25 })//绝对定位 
            .backgroundColor(this.currentCenterColor == '蓝色' ? Color.Blue : Color.Red) 
            .onClick(() => { 
              if (this.currentCenterColor == '蓝色') { 
                this.currentCenterColor = '红色' 
              } else { 
                this.currentCenterColor = '蓝色' 
              } 
              this.countDown = setTimeout(() => { 
                this.currentCenterColor = '蓝色' 
              }, TimeSetting.stayTime) //设置定时器时间以及处理事件 
            }) 
        } 
        .width('100') 
        .height('100') 
        .backgroundColor('#ffffff') 
        .border({ 
          //border的宽度是向内的,宽度越大占用内部空间越大 
          color: Color.Blue, 
          width: 10, 
          radius: 100 
        }) 
      } 
      .width('100%') 
      .height('100%') 
      .justifyContent(FlexAlign.Center) 
    } 
    .height('100%') 
  } 
} 
 
class TimeSetting { 
  public static readonly stayTime = 300 //单位是毫秒 
}
分享
微博
QQ
微信
回复
2024-11-27 15:06:44
相关问题
har包不能用worker,taskpool可以吗
1843浏览 • 1回复 待解决
如果不设置,可以吗
4159浏览 • 1回复 待解决
HarmonyOS 页面可以继承
474浏览 • 1回复 待解决
HarmonyOS 可以创建内部类
182浏览 • 1回复 待解决
HarmonyOS " @State可以修饰ArrayList"
370浏览 • 1回复 待解决
HarmonyOS Span 可以设置padding
403浏览 • 1回复 待解决
鸿蒙可以玩王者可以玩吃鸡
8637浏览 • 2回复 待解决
HarmonyOS 绘制水印如何实现?
219浏览 • 1回复 待解决
HarmonyOS so文件可以改名字
2浏览 • 1回复 待解决