微信小程序实现电子签名功能


Posted in Javascript onJuly 29, 2020

本文实例为大家分享了微信小程序实现电子签名的具体代码,供大家参考,具体内容如下

// XXXX.wxml
<view class="signName">
 <canvas class="canvas" id="canvas" canvas-id="canvas" disable-scroll="true" bindtouchstart="canvasStart"
  bindtouchmove="canvasMove" bindtouchend="canvasEnd" touchcancel="canvasEnd"
  binderror="canvasIdErrorCallback"></canvas>
 </view>
 <view class="CList flex">
 <view class="flex_item marginR20" >
  <view class="saveBtn" bindtap="uploadImg">上传签名</view>
 </view>
 <view class="flex_item">
  <view class="clearBtn" bindtap="cleardraw">清除签名</view>
</view>

js:

var context = null;// 使用 wx.createContext 获取绘图上下文 context
var isButtonDown = false;//是否在绘制中
var arrx = [];//动作横坐标
var arry = [];//动作纵坐标
var arrz = [];//总做状态,标识按下到抬起的一个组合
var canvasw = 0;//画布宽度
var canvash = 0;//画布高度
Page({

 data: {
 },
 
 onLoad: function () {
  this.startCanvas();
 },
 /**
 * 以下 - 手写签名 / 上传签名
 */
 startCanvas: function () {//画布初始化执行
 var that = this;
 //获取系统信息
 wx.getSystemInfo({
  success: function (res) {
  canvasw = res.windowWidth;
  canvash = res.windowHeight;
  that.setData({ canvasw: canvasw });
  that.setData({ canvash: canvash });
  }
 }); 
 this.initCanvas();
 this.cleardraw(); 
 },
 //初始化函数
 initCanvas: function () {
 context = wx.createCanvasContext('canvas');
 context.beginPath()
 context.fillStyle = 'rgba(255, 255, 255, 0)';
 context.setStrokeStyle('#000000');
 context.setLineWidth(4);
 context.setLineCap('round');
 context.setLineJoin('round');
 },
 canvasStart: function (event) {
 isButtonDown = true;
 arrz.push(0);
 arrx.push(event.changedTouches[0].x);
 arry.push(event.changedTouches[0].y);
 },
 canvasMove: function (event) {
 if (isButtonDown) {
  arrz.push(1);
  arrx.push(event.changedTouches[0].x);
  arry.push(event.changedTouches[0].y);
 }
 for (var i = 0; i < arrx.length; i++) {
  if (arrz[i] == 0) {
  context.moveTo(arrx[i], arry[i])
  } else {
  context.lineTo(arrx[i], arry[i])
  }
 }
 context.clearRect(0, 0, canvasw, canvash);
 context.setStrokeStyle('#000000');
 context.setLineWidth(4);
 context.setLineCap('round');
 context.setLineJoin('round');
 context.stroke();
 context.draw(false);
 },
 canvasEnd: function (event) {
 isButtonDown = false;
 },
 //清除画布
 cleardraw: function () {
 arrx = [];
 arry = [];
 arrz = [];
 context.clearRect(0, 0, canvasw, canvash);
 context.draw(true);
 },
 uploadImg(){
 var that = this
 //生成图片
 wx.canvasToTempFilePath({
  canvasId: 'canvas',
  //设置输出图片的宽高
  // destWidth:150, 
  // destHeight:150,
  // fileType:'jpg',
  quality:1.0,
  success: function (res) {
  console.log(res)
  // canvas图片地址 res.tempFilePath
  },
  fail: function () {
  wx.showModal({
   title: '提示',
   content: 'canvas生成图片失败。微信当前版本不支持,请更新到最新版本!',
   showCancel: false
  });
  },
  complete: function () {}
 })
 },
})

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js下利用控制器载入对应脚本
Jul 17 Javascript
解析Jquery的LigerUI如何实现文件上传
Jul 09 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
java、javascript实现附件下载示例
Aug 14 Javascript
巧用jQuery选择器提高写表单效率的方法
Aug 19 Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 Javascript
全面解析node 表单的图片上传
Nov 21 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
vue组件系列之TagsInput详解
May 14 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 #Javascript
浅谈JavaScript中this的指向问题
Jul 28 #Javascript
浅谈JavaScript中this的指向更改
Jul 28 #Javascript
Postman内建变量常用方法实例解析
Jul 28 #Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 #Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
Jul 28 #Javascript
解决vue bus.$emit触发第一次$on监听不到问题
Jul 28 #Javascript
You might like
SONY SRF-M100的电路分析
2021/03/02 无线电
php下MYSQL limit的优化
2008/01/10 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
Python随机生成手机号、数字的方法详解
2017/07/21 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
中专生自我鉴定
2013/12/17 职场文书
项目负责人任命书
2014/06/04 职场文书
校园绿化美化方案
2014/06/08 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
白鹤梁导游词
2015/02/06 职场文书
员工年度工作总结2015
2015/05/18 职场文书
师范生见习自我总结
2015/06/23 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Mysql基础之常见函数
2021/04/22 MySQL
Python基础之元编程知识总结
2021/05/23 Python
python 如何做一个识别率百分百的OCR
2021/05/29 Python