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


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 arguments 传递给函数的隐含参数
Aug 21 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
浅谈React Event实现原理
Sep 20 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
JS加载解析Markdown文档过程详解
May 19 Javascript
JavaScript编码小技巧分享
Sep 17 Javascript
如何用JS实现网页瀑布流布局
Apr 24 Javascript
用JS写一个发布订阅模式
Nov 07 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php之readdir函数用法实例
2014/11/13 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
python实现逻辑回归的方法示例
2017/05/02 Python
Mac 上切换Python多版本
2017/06/17 Python
python实现Floyd算法
2018/01/03 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
Servlet如何得到客户端机器的信息
2014/10/17 面试题
大学生求职信范文应怎么写
2014/01/01 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
JVM之方法返回地址详解
2022/02/28 Java/Android
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技