怎么让Canvas刷新呀?

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

@component  
struct MyCanvas {  
  @State context: CanvasRenderingContext2D = new CanvasRenderingContext2D();  
  @State 起始位置  
  
  build( ) {  
    Canvas(this.context)  
      .onReady(() => {  
        在“起始位置”处画圆  
      })  
      .onTouch(event: TouchEvent) => {  
      更改“起始位置”  
    })  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

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

HarmonyOS
2024-10-10 13:12:48
6681浏览
收藏 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


相关问题
HarmonyOS Canvas怎么刷新
689浏览 • 1回复 待解决
HarmonyOS 如何Canvas重绘
787浏览 • 1回复 待解决
Canvas如何触发刷新重复绘制?
1632浏览 • 1回复 待解决
如何控制canvas组件的刷新
1566浏览 • 1回复 待解决
HarmonyOS canvas是否有定时刷新的函数
775浏览 • 1回复 待解决
请问arkts怎么用javascript的库
171浏览 • 0回复 待解决
swicth得怎么有没有懂的啊?
1312浏览 • 1回复 待解决
我的P4怎么升级鸿蒙系统
6770浏览 • 2回复 待解决
日历里面怎么设置周首日为周二
255浏览 • 0回复 待解决
HarmonyOS List怎么刷新数据?
836浏览 • 1回复 待解决
HarmonyOS web组件怎么刷新
599浏览 • 1回复 待解决
Canvas画的时候,怎么设置画笔颜色
1247浏览 • 1回复 待解决
HarmonyOS 怎么整个Page重新加载
641浏览 • 1回复 待解决
canvas怎么绘制资源目录下的图片
1470浏览 • 1回复 待解决
怎么项目全局使用d.ts
4287浏览 • 1回复 待解决
提问
该提问已有2人参与 ,帮助了40人