微信小程序实现签字功能


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 相关文章推荐
一个cssQuery对象 javascript脚本实现代码
Jul 21 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 Javascript
JS简单实现登陆验证附效果图
Nov 19 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
Jun 08 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
解决ionic和angular上拉加载的问题
Aug 03 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
vue iview实现动态新增和删除
Jun 17 Javascript
Vue ​v-model相关知识总结
Jan 28 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
使用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并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
js读取本地文件的实例
2017/12/22 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
高二地理教学反思
2014/01/24 职场文书
禁烟标语大全
2014/06/11 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang