微信小程序实现签字功能


Posted in Javascript onDecember 23, 2019

效果展示

微信小程序实现签字功能 

准备工作

1.canvas的使用

主要用到了 bindtouchstart , bindtouchmove 两个属性,捕捉手指移动的同时,将移动前的坐标和移动后的坐标用canvas的画图api绘制出来

2.wx.createCanvasContext

这个api用于创建并获取指定canvas对象

代码说明

在wxml中声明一个canvas

指定canvas-id和触摸开始和移动函数

<canvas canvas-id="firstCanvas" id='firstCanvas' bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove"></canvas>

初始化canvas

onShow: function() {
 const context = wx.createCanvasContext('firstCanvas')
 this.setData({
  context: context
 })
 context.draw()
 },

给手指触摸绑定函数

// 开始触摸
bindtouchstart: function(e) {
 console.log("bindtouchstart", e);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
 },
 
// 触摸移动
bindtouchmove: function(e) {
 console.log("bindtouchstart", e);
 this.data.context.lineTo(e.changedTouches[0].x, e.changedTouches[0].y);
 this.data.context.stroke();
 this.data.context.draw(true);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y);
 },

具体代码

index.wxml

<view class="container">
 <canvas style="margin: 0 15rpx;width: 720rpx;height: 720rpx;border: 1px #333 solid;background-color: #fff;" canvas-id="firstCanvas" id='firstCanvas' bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove"></canvas>
 <view class="btn">
 <view bindtap='clear' class="clear">
  清除
 </view>
 <view bindtap='export' class="submit">
  提交
 </view>
 </view>
 <image style="width:360rpx;height:360rpx;margin: 10rpx 0;" mode="aspectFill" src="{{imgUrl}}"></image>
</view>

index.js

Page({
 data: {
 context: null,
 imgUrl: ""
 },
 /**记录开始点 */
 bindtouchstart: function(e) {
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
 },
 /**记录移动点,刷新绘制 */
 bindtouchmove: function(e) {
 this.data.context.lineTo(e.changedTouches[0].x, e.changedTouches[0].y);
 this.data.context.stroke();
 this.data.context.draw(true);
 this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y);
 },
 /**清空画布 */
 clear: function() {
 this.data.context.draw();
 },
 /**导出图片 */
 export: function() {
 const that = this;
 this.data.context.draw(false, wx.canvasToTempFilePath({
  x: 0,
  y: 0,
  fileType: 'jpg',
  canvasId: 'firstCanvas',
  success(res) {
  const {
   tempFilePath
  } = res;
  that.setData({
   imgUrl: tempFilePath,
  })
  },
  fail() {
  wx.showToast({
   title: '导出失败',
   icon: 'none',
   duration: 2000
  })
  }
 }))
 },
 onShow: function() {
 const context = wx.createCanvasContext('firstCanvas')
 this.setData({
  context: context
 })
 context.draw()
 },
})

总结

以上所述是小编给大家介绍的微信小程序实现签字功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
解决 FireFox 下[使用event很麻烦] 的问题.
Aug 22 Javascript
js数组的操作详解
Mar 27 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 Javascript
javascript运算符语法全面概述
Jul 14 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
浅谈vuex之mutation和action的基本使用
Aug 29 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
Oct 14 Javascript
使用JS location实现搜索框历史记录功能
Dec 23 #Javascript
vue实现移动端图片上传功能
Dec 23 #Javascript
vue实现拖拽效果
Dec 23 #Javascript
JQuery常用选择器功能与用法实例分析
Dec 23 #jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 #jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 #jQuery
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 #jQuery
You might like
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python 文件转成16进制数组的实例
2018/07/09 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
python递归下载文件夹下所有文件
2019/08/31 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
市场部规章制度
2014/01/24 职场文书
搞笑征婚广告词
2014/03/17 职场文书
讲解员培训方案
2014/05/04 职场文书
活动总结模板
2014/05/09 职场文书
小学亲子活动总结
2014/07/01 职场文书
国情备忘录观后感
2015/06/04 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技