微信小程序实现签字功能


Posted in Javascript onDecember 23, 2019

效果展示

微信小程序实现签字功能 

准备工作

1.canvas的使用

主要用到了 bindtouchstart , bindtouchmove 两个属性,捕捉手指移动的同时,将移动前的坐标和移动后的坐标用canvas的画图api绘制出来

2.wx.createCanvasContext

这个api用于创建并获取指定canvas对象

代码说明

在wxml中声明一个canvas

指定canvas-id和触摸开始和移动函数

<canvas canvas-id="firstCanvas" id='firstCanvas' bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove"></canvas>

初始化canvas

onShow: function() {
 const context = wx.createCanvasContext('firstCanvas')
 this.setData({
  context: context
 })
 context.draw()
 },

给手指触摸绑定函数

// 开始触摸
bindtouchstart: function(e) {
 console.log("bindtouchstart", e);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
 },
 
// 触摸移动
bindtouchmove: function(e) {
 console.log("bindtouchstart", e);
 this.data.context.lineTo(e.changedTouches[0].x, e.changedTouches[0].y);
 this.data.context.stroke();
 this.data.context.draw(true);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y);
 },

具体代码

index.wxml

<view class="container">
 <canvas style="margin: 0 15rpx;width: 720rpx;height: 720rpx;border: 1px #333 solid;background-color: #fff;" canvas-id="firstCanvas" id='firstCanvas' bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove"></canvas>
 <view class="btn">
 <view bindtap='clear' class="clear">
  清除
 </view>
 <view bindtap='export' class="submit">
  提交
 </view>
 </view>
 <image style="width:360rpx;height:360rpx;margin: 10rpx 0;" mode="aspectFill" src="{{imgUrl}}"></image>
</view>

index.js

Page({
 data: {
 context: null,
 imgUrl: ""
 },
 /**记录开始点 */
 bindtouchstart: function(e) {
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
 },
 /**记录移动点,刷新绘制 */
 bindtouchmove: function(e) {
 this.data.context.lineTo(e.changedTouches[0].x, e.changedTouches[0].y);
 this.data.context.stroke();
 this.data.context.draw(true);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y);
 },
 /**清空画布 */
 clear: function() {
 this.data.context.draw();
 },
 /**导出图片 */
 export: function() {
 const that = this;
 this.data.context.draw(false, wx.canvasToTempFilePath({
  x: 0,
  y: 0,
  fileType: 'jpg',
  canvasId: 'firstCanvas',
  success(res) {
  const {
   tempFilePath
  } = res;
  that.setData({
   imgUrl: tempFilePath,
  })
  },
  fail() {
  wx.showToast({
   title: '导出失败',
   icon: 'none',
   duration: 2000
  })
  }
 }))
 },
 onShow: function() {
 const context = wx.createCanvasContext('firstCanvas')
 this.setData({
  context: context
 })
 context.draw()
 },
})

总结

以上所述是小编给大家介绍的微信小程序实现签字功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Jquery 的outerHeight方法使用介绍
Sep 11 Javascript
javascript 面向对象封装与继承
Nov 27 Javascript
DOM 事件流详解
Jan 20 Javascript
JScript中的条件注释详解
Apr 24 Javascript
jQuery插件实现文件上传功能(支持拖拽)
Aug 27 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
详解node单线程实现高并发原理与node异步I/O
Sep 21 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
vue源码解析之事件机制原理
Apr 21 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 Javascript
使用JS location实现搜索框历史记录功能
Dec 23 #Javascript
vue实现移动端图片上传功能
Dec 23 #Javascript
vue实现拖拽效果
Dec 23 #Javascript
JQuery常用选择器功能与用法实例分析
Dec 23 #jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 #jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 #jQuery
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 #jQuery
You might like
PHP获取网卡地址的代码
2008/04/09 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript的Cookies
2008/01/16 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
python中redis的安装和使用
2016/12/04 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
详解Python中import机制
2020/09/11 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
离婚案件上诉状
2015/05/23 职场文书
暂住证明怎么写
2015/06/19 职场文书
退休欢送会主持词
2015/07/01 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Golang流模式之grpc的四种数据流
2022/04/13 Golang