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


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 相关文章推荐
javascript学习笔记(三)显示当时时间的代码
Apr 08 Javascript
关于Jquery操作Cookie取值错误的解决方法
Aug 26 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
Nov 04 Javascript
两种简单的跨域方法(jsonp、php)
Jan 02 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
Vue实现用户自定义字段显示数据的方法
Aug 28 Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 Javascript
详解Vue之事件处理
Jul 10 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
php去除重复字的实现代码
2011/09/16 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
node.js调用C++开发的模块实例
2015/07/03 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
Python基于locals返回作用域字典
2020/10/17 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
司机职责范本
2014/03/08 职场文书
车间主任岗位职责
2014/03/16 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
社区创先争优承诺书
2014/08/30 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
举起手来观后感
2015/06/09 职场文书
教师节领导致辞
2015/07/29 职场文书