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


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 相关文章推荐
使用POST方式弹出窗口的两种方法示例介绍
Jan 29 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
Oct 30 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
js实现简单的碰壁反弹效果
Aug 30 Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
微信小程序实现的一键复制功能示例
Apr 24 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
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作为Shell脚本语言使用
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php实现购物车功能(上)
2020/07/23 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
js活用事件触发对象动作
2008/08/10 Javascript
jquery 学习笔记一
2010/04/07 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
layui的table中显示图片方法
2018/08/17 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
python读取Excel实例详解
2018/08/17 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
入党推优材料
2014/06/02 职场文书
关爱残疾人标语
2014/06/25 职场文书
化工见习报告范文
2014/10/31 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python