怎么让Canvas刷新呀?

在Canvas上画一个圆,然后随着我手指在Canvas上移动,那个圆跟着移动,为此我自定义了一个控件如下(是伪代码,仅表意思):

@component  
struct MyCanvas {  
  @State context: CanvasRenderingContext2D = new CanvasRenderingContext2D();  
  @State 起始位置  
  
  build( ) {  
    Canvas(this.context)  
      .onReady(() => {  
        在“起始位置”处画圆  
      })  
      .onTouch(event: TouchEvent) => {  
      更改“起始位置”  
    })  
  }  
}

现在的问题是,在手指移动事件中,我虽然改变了“起始位置”,但Canvas并不刷新(并不会再走onReady),所以圆不会移动,我感觉我还没有理解ArtTS UI的刷新机制,Text(msg)可以自动刷新是因为改变了 @State msg,但这个Canvas的参数 context 怎么改变以引起Canvas刷新呢?请问我的问题出在哪里呢?如果我的思路整个就是错的,那应该怎么实现我这个功能呢?

HarmonyOS
2024-10-10 13:12:48
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

Canvas刷新可以采用的方案是:将@State装饰的变量使用@Watch进行监听,变量变化时触发自定义方法重新绘制,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-watch-V5

可以使用绘制组件中的Circle组件结合组件通用事件中的拖拽事件进行实现。

分享
微博
QQ
微信
回复
2024-10-10 18:18:30
相关问题
Canvas如何触发刷新重复绘制?
816浏览 • 1回复 待解决
如何控制canvas组件的刷新
358浏览 • 1回复 待解决
我的P4怎么升级鸿蒙系统
6074浏览 • 2回复 待解决
swicth得怎么有没有懂的啊?
377浏览 • 1回复 待解决
Canvas画的时候,怎么设置画笔颜色
300浏览 • 1回复 待解决
canvas怎么绘制资源目录下的图片
587浏览 • 1回复 待解决
怎么项目全局使用d.ts
3262浏览 • 1回复 待解决
abilityslice的意义是什么
10871浏览 • 3回复 待解决
怎么页面虚化有懂的吗?
2230浏览 • 1回复 待解决
RTOS在什么项目能用到
6850浏览 • 3回复 待解决
List局部刷新,有人知道怎么处理吗?
1106浏览 • 1回复 待解决
console.log在哪里看
17560浏览 • 3回复 已解决