HarmonyOS 鸿蒙Next canvas在重复调用invalidate()更新时如何在原来基础上增加画线而不需要重复画原有的线

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next canvas在重复调用invalidate()更新时如何在原来基础上增加画线而不需要重复画原有的线

@Override public void onDraw(Component component, Canvas canvas) { canvas.drawPath(linePath,linePaint); }

我想在触控事件里面,更新更多线到画布上,怎么实现保留原来的基础上增加而不是每次都需要重复之前的线。 有没有大佬指点一下。

8 回复

楼主你好,canvas相关操作请参看codelabs《分布式手写画板》
https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/Distribute-Database-Draw
可获取完整代码

更多关于HarmonyOS 鸿蒙Next canvas在重复调用invalidate()更新时如何在原来基础上增加画线而不需要重复画原有的线的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


欢迎开发小伙伴们进来帮帮楼主

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

调用strocke绘制,不要用invald

早上好,我搜索了参考文档没有这个方法的说明。

姓名: 张三
职位: 软件工程师
技能: Python, Java, C++
简介: 拥有超过10年的软件开发经验,擅长多种编程语言。

在HarmonyOS鸿蒙系统中,当使用Next canvas进行绘图并希望在调用invalidate()更新视图时,在原有基础上增加画线而不重复绘制原有线条,可以通过以下几种方式实现:

  1. 维护一个绘制状态:在自定义组件或视图中维护一个状态变量,记录已绘制的线条信息。每次onDraw()被调用时,先根据这个状态变量重绘已有的线条,然后再添加新的线条。

  2. 使用Canvas的save()和restore():在绘制新线条前,使用canvas.save()保存当前Canvas状态,绘制完新线条后,使用canvas.restore()恢复到之前的状态。但这种方法更多用于变换(如平移、旋转、缩放)的场景,对于连续画线,通常还是依赖状态管理。

  3. 双层Canvas或Bitmap:可以在内存中维护一个Bitmap作为底层Canvas,每次需要更新时,在这个Bitmap上进行绘制,然后将整个Bitmap绘制到屏幕Canvas上。这样,每次只添加新线条到Bitmap上,不会影响到已有的绘制。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部