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


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 相关文章推荐
5款Javascript颜色选择器
Oct 25 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
js在IE与firefox的差异集锦
Nov 11 Javascript
Javascript的比较汇总
Jul 25 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 Javascript
Bootstrap CSS组件之大屏幕展播
Dec 17 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
Dec 20 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 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调用C代码的实现方法
2014/03/11 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
django表单的Widgets使用详解
2019/07/22 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
python lambda的使用详解
2021/02/26 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
材料物理专业大学毕业生求职信
2013/10/15 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
文明好少年事迹材料
2014/08/19 职场文书
销售人才自我评价范文
2014/09/27 职场文书
违纪学生保证书
2015/02/27 职场文书
歌舞青春观后感
2015/06/10 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
python异步的ASGI与Fast Api实现
2021/07/16 Python