当前位置:网站首页>#夏日挑战赛# HarmonyOS - 实现签名功能
#夏日挑战赛# HarmonyOS - 实现签名功能
2022-07-29 15:51:00 【51CTO】
作者:范颖
前言
我刚接触HarmonyOS不久,接触到了很多不一样的东西。虽然遇到了很多问题,但学习本来就不是一蹴而就的,所以我决定从简单到复杂,所以这次我分享一个用canvas实现的签字效果。
效果展示
实现功能
签字效果的实现,以及签字相关的预览、撤销、清空等功能,目前还在学习HarmonyOS中,更多的功能还没有完善出来,后续我会对这个功能不断地完善。
实现思路
- hml代码如下
- css样式如下
- index.js中data的数据
- 实现签字效果
在onShow生命周期里面初始化canvas画布,其中getBoundingClientRect方法是获取元素的大小及其相对于窗口的位置,ctx是画布对象。
- touchStart、touchMove、touchEnd函数以及draw函数实现签字效果。通过touch事件获取当前的坐标值,然后通过canvas的绘制路径的API来绘制经过的路径,每执行完一次touch事件把当前的画布记录下来供后面的撤销等功能用。
属性值
属性 | 描述 |
---|---|
moveTo() | 路径从当前点移动到指定点 |
lineTo() | 从当前点到指定点进行路径连接 |
lineCap | 属性设置或返回线条末端线帽的样式 |
lineJoin | 属性设置或返回所创建边角的类型,当两条线交汇时 |
lineWidth | 线条的宽度 |
strokeStyle | 设置描边的颜色 |
stroke | 进行边框绘制操作 |
- 实现撤销效果(根据storageStep中的数据来显示画布的信息,其中数据已经在touchEnd函数中保存)
- 实现清空效果 - 清空storageStep数组中的所有数据。
- 实现预览效果。预览效果就是把画布信息转化为base64,用到了toDataURL方法,返回一个包含图片展示的 data URI。
注意:
我在写这个效果的过程当中发现canvas中有一些函数需要较高的JS API版本才能实现,比如getBoundingClientRect和toDataURL函数,它们所支持的版本为JS API6及以上。如果版本过低,这两个函数会报错。该签名效果是在P40 pro上模拟成功的。
总结
以上就是我实现签名效果的全部内容,最终效果如动图所示。虽然样式比较简陋,但是目前已经实现了签名的基本功能,后续我会不断地完善与改进,争取写出更完整优美的demo。欢迎大家一起研究讨论,希望本次内容能够对大家有所帮助。
更多原创内容请关注: 中软国际 HarmonyOS 技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
边栏推荐
- 干货!如何使用仪表构造SRv6-TE性能测试环境
- tcp的四次挥手(为什么三次握手和四次挥手)
- 揭秘 | 2019 To B 年度盛宴那些人和那些事
- linux 安装mysql8.0 超详细教程(实战多次)
- Practice of Weibo Advertising Operation and Maintenance Technology Supporting Ten Billions of Requests
- Google Play 政策更新 | 2022 年 7 月
- 使用DataEase开源工具制作一个高质量的数据大屏
- Steam CMD是什么?Steam CMD怎么用?
- 华虹半导体四季度营收再创历史新高,同比增长15.4%
- Property (Property Animation Animation), the basic use of Butterknife butter knife
猜你喜欢
【服务器存储数据恢复】华为OceanStor某型号存储raid5硬盘故障离线,热备盘同步数据失败导致raid崩溃的数据恢复案例
分布式前修课:MySQL实现分布式锁
Qt combat | how to access the USB device information?
Detailed evaluation of Renesas RZ/G2L processor
Dry goods!How to Construct SRv6-TE Performance Test Environment Using Instrumentation
参与一个rk3399的一起学习班级
【微信小程序】组件使用及属性参考
【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)
一文读懂Elephant Swap,为何为ePLATO带来如此高的溢价?
传输层 TCP的连接管理-释放连接四次握手
随机推荐
货比三家 tb1.3
MLX90640 infrared thermal imager development notes (9)
I/O Code Practice
Moving forward steadily without forgetting the original intention, Volvo's sense of security comes from the public's recognition
中国厂商统治印度智能手机市场,份额提升至77%
边缘计算如何与小程序结合?智能家居如何借势发展?
教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5
环球晶圆成功以43.5亿欧元获得Siltronic控股权
Steam CMD是什么?Steam CMD怎么用?
虚拟远程桌面
See you in shenzhen!Cloud native to accelerate the application building special: see cloud native FinOps, SRE, high-performance computing scenario best practices
专访亚信科技张桦:AntDB面向企业核心业务支撑的数据库产品
干货!如何使用仪表构造SRv6-TE性能测试环境
Recommended Remote Desktop Tools
Practice of Weibo Advertising Operation and Maintenance Technology Supporting Ten Billions of Requests
Android Studio 实现登录注册-源代码 (连接MySql数据库)
上海移动基于亚信科技AntDB完成核心账务数据库的国产化替换
【Swoole系列3.2】Swoole 异步进程服务系统
中小型金融企业该如何进行灾备建设?
NTP服务器搭建