丝滑流畅的手写签名 canvas 2d

在最近的小程序项目中,设计师又给我出难题了,需要在小程序里面实现一个手写签名功能,完成后将签名生成文件,上传的服务端去。手写签名不难,难在居然要我生成 svg,还有将签名功能搞得和画板一样,我是不能忍,直呼搞不了。

安卓版手写签名
https://github.com/silencefly96/drawdemo

签名功能实际在我之前的安卓开发中用过,支持笔画的前进、后退、全清除以及图片的导出,真就快做到 生成 SVG 的底部了,要不是我不懂 SVG ,就手撕一个根据 path 路径生成 svg 的代码了。

扯远了,小程序和安卓原生比不得,我就只弄了清除和导出功能。

先看看效果

在这里插入图片描述

这个是使用二阶贝塞尔曲线优化后的效果,曲线很流畅。
在这里插入图片描述

这个是没使用贝塞尔曲线优化的效果,笔画很粗糙。

性能和适配

一开始我用的旧版本 canvas 去绘制签名,因为网上有个县城的案例,后面发现用起来卡的一批,而且在有些手机上导出图片还会有没数据问题,根本没法忍。

于是自己学了学 canvas 2d 的用法,结合贝塞尔曲线,做了个性能和流畅度都还可以的手写签名页面。

看看代码

  • WXML
<canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove" />
<cover-view class="row button-container">
  <cover-view class="flex1 button " bindtap='clear'>
    清除
  </cover-view>
  <cover-view class="flex1 button margin-left-12" bindtap='export'>
    提交
  </cover-view>
</cover-view>

这里就是放了一个 canvas,加上使用 cover-view做的两个按钮。

  • JSON
{
   
  "usingComponents": {
   },
  "pageOrientation": "landscape",
  "navigationBarTitleText": "手写签名"<
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值