[HarmonyOS Next示例代码]自界说Canvas画布

打印 上一主题 下一主题

主题 842|帖子 842|积分 2526



HarmonyOS_Samples/CustomCanvas

HarmonyOS next 示例代码全集
自界说Canvas画布

介绍

本示例介绍了利用Canvas实现一个包括了画笔粗细、颜色和透明度的选择、绘制、缩放、扫除等功能的自界说画布。
结果图预览



利用阐明


  • 进入首页后,下方有五个按钮,画笔默认选中,可以在空缺部分进行绘画,默认粗细是3,颜色是玄色不透明。
  • 进行绘制后,撤回按钮会高亮可点击,点击后可以撤回上一步的笔画;同时重做按钮会高亮可点击,点击重做后还原上一步撤销的笔画。
  • 点击橡皮擦按钮后,手指绘画就会实现擦除结果,画笔按钮取消高亮。
  • 点击清空按钮会清空整个画布的全部绘制,同时清空按钮高亮。
  • 点击画笔按钮,会弹出半模态弹窗,在弹窗内可以选择画笔的类型、颜色、不透明度和粗细。
  • 本示例只展示圆珠笔和马克笔两种类型,圆珠笔为默认类型,这里可以点击马克笔,关闭弹窗再次进行绘画,笔画就变为马克笔。
  • 再次点击画笔唤起弹窗,可以切换颜色、不透明度和粗细,不透明度只有马克笔可以切换,圆珠笔不可以切换。
  • 双指捏合画布缩小,双指外扩画布放大,缩放时画笔按钮取消高亮,缩放结束后,点击画笔就可以再次进行绘制。
工程目次

  1. ├──entry/src/main/ets/
  2. │  ├──common
  3. │  │  └──CommonConstants.ets         // 公共常量类
  4. │  ├──entryability
  5. │  │  └──EntryAbility.ets            // 程序入口类
  6. │  ├──pages                  
  7. │  │  └──Index.ets                   // 首页
  8. │  ├──view   
  9. │  │  └──myPaintSheet.ets            // 半模态页面
  10. │  └──viewmodel
  11. │     ├──DrawInvoker.ets             // 绘制方法
  12. │     ├──IBrush.ets                  // 笔刷接口
  13. │     ├──IDraw.ets                   // 绘制类
  14. │     └──Paint.ets                   // 绘制属性类
  15. └──entry/src/main/resources          // 应用静态资源目录
复制代码
具体实现


  • 通过在Canvas上绑定onTouch变乱获取触摸点的相对画布的x轴和y轴坐标,将坐标传入路径对象Path2D的moveTo和lineTo方法实现绘制功能。
  • 橡皮擦功能是通过修改CanvasRenderingContext2D的strokeStyle属性为白色来实现的。
  • 每条绘制路径都会通过add方法存放到绘制数组drawPathList中,撤回功能将drawPathList末了一项移除并存到重做数组redoList中,重做功能把redoList中末了一项扫除并重新放回drawPathList中。
  • 扫除功能是将drawPathList和redoList数组清空后重新绘制画布。
  • 笔刷中圆珠笔的globalAlpha属性值默认为1,且不可改变,马克笔的globalAlpha属性值默认为0.5,可以通过Slider组件调整不透明度。
  • 颜色和粗细修改是通过修改CanvasRenderingContext2D的strokeStyle和lineWidth属性来实现的。
相关权限

不涉及。
约束与限制


  • 本示例仅支持标准体系上运行,支持装备:华为手机。
  • HarmonyOS体系:HarmonyOS NEXT Developer Beta1及以上。
  • DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。
  • HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表