微信小程序实现签字功能


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 相关文章推荐
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
jQuery 位置插件
Dec 25 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
node.js文件上传处理示例
Oct 27 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
Feb 27 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
Feb 14 Javascript
vue中改变滚动条样式的方法
Mar 03 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
常用的php对象类型判断
2008/08/27 PHP
php xml文件操作代码(一)
2009/03/20 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
使用python求解二次规划的问题
2020/02/29 Python
Python如何使用input函数获取输入
2020/08/06 Python
澳洲的服装老品牌:SABA
2018/02/06 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
UNIX文件系统分类
2014/11/11 面试题
高校自主招生自荐信
2013/12/09 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
学校联谊活动方案
2014/02/15 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
教师三严三实心得体会
2014/10/11 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
婚庆公司开业主持词
2015/06/30 职场文书