微信小程序怎么实现手写签名
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,本文小编为大家详细介绍"微信小程序怎么实现手写签名",内容详细,步骤清晰,细节处理妥当,希望这篇"微信小程序怎么实现手写签名"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在
千家信息网最后更新 2024年11月20日微信小程序怎么实现手写签名
本文小编为大家详细介绍"微信小程序怎么实现手写签名",内容详细,步骤清晰,细节处理妥当,希望这篇"微信小程序怎么实现手写签名"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
在微信小程序上实现手写签名,获取canvascontext新版本和旧版本有点坑,新版本在获取canvas后如果页面有滑动,则签名坐标出现异常(在微信开发者工具上会出现2022-2-17),但是在真机上即使滑动也不会出现异常,为了防止出现问题,暂时使用旧版本获取canvascontext
1.效果图
2.相关代码
canvas代码
新版2d canvas
旧版canvas
js相关
获取新版2d canvas对象
const query = uni.createSelectorQuery().in(this);query.select('.canvas').node(res => { const { _width, _height } = res.node; /* 获取canvas wxml节点 */ this.canvas = res.node; this.canvasWidth = _width; this.canvasHeight = _height; /* 获取canvas 2dcontext */ this.canvasContext= this.canvas.getContext('2d'); /* 缩放设置canvas画布大小,防止笔迹错位 */ const ratio = wx.getSystemInfoSync().pixelRatio; this.canvas.width = this.canvasWidth * ratio; this.canvas.height = this.canvasHeight * ratio; this.canvasContext.scale(ratio, ratio); /* 设置线条颜色 */ this.canvasContext.strokeStyle = '#2A2A2A'; /* 设置线条粗细 */ this.canvasContext.lineWidth = 4; /* 设置线条的结束端点样式 */ this.canvasContext.lineCap = 'round';}).exec()
缩放设置canvas画布大小,防止笔迹错位,这点和页面滑动没有关系,不设置也会导致坐标错位
const ratio = wx.getSystemInfoSync().pixelRatio;this.canvas.width = this.canvasWidth * ratio;this.canvas.height = this.canvasHeight * ratio;this.canvasContext.scale(ratio, ratio);
旧版本获取canvas
this.canvasContext = uni.createCanvasContext('canvas', this);/* 设置线条颜色 */this.canvasContext.setStrokeStyle('#2A2A2A');/* 设置线条粗细 */this.canvasContext.setLineWidth(4);/* 设置线条的结束端点样式 */this.canvasContext.setLineCap('round');
签名js方法,新版本和旧版本只有一个draw的区别,新版本不需要使用draw方法
/* 触摸开始 */handleTouchStart(e) { this.drawStartX = e.changedTouches[0].x; this.drawStartY = e.changedTouches[0].y; this.canvasContext.beginPath();},/* 触摸移动 */handleTouchMove(e) { /* 记录当前位置 */ const tempX = e.changedTouches[0].x; const tempY = e.changedTouches[0].y; /* 画线 */ this.canvasContext.moveTo(this.drawStartX, this.drawStartY); this.canvasContext.lineTo(tempX, tempY); this.canvasContext.stroke(); /* 旧版draw方法,新版本不需要draw */ this.canvasContext.draw(true); /* 重新记录起始位置 */ this.drawStartX = tempX; this.drawStartY = tempY;},/* 触摸结束 */handleTouchEnd(e) { this.canvasContext.save();},/* 触摸取消 */handleTouchCancel(e) { this.canvasContext.save();},/* 清空画布 */clearCanvas() { this.canvasContext.clearRect(0, 0, this.canvasWidth, this.canvasHeight);},
canvas生成本地图片(我这里封装了组件,需要传入this防止this指向异常)
/* 生成签名图片 */generateSignImage() { return new Promise((resolve, reject) => { uni.canvasToTempFilePath({ x: 0, y: 0, // canvas: this.canvas, // 新版 canvasId: 'canvas', // 旧版使用id width: this.canvasWidth, height: this.canvasHeight, destWidth: this.canvasWidth, destHeight: this.canvasHeight, fileType: 'png', quality: 1, success: res => { resolve(res.tempFilePath) }, fail: err => { reject(err); } }, this) })},
新版本的canvas主要是canvas wxml节点和canvas context中做了区分,旧版则只有一个canvas context就可以做全部的操作,在生成图片时,新版本是传入wxml对象,旧版本则是传入唯一canvasId,新版本canvas取消了draw方法
读到这里,这篇"微信小程序怎么实现手写签名"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
线条
版本
程序
方法
图片
文章
画布
代码
位置
内容
只有
坐标
大小
对象
样式
端点
笔迹
粗细
节点
页面
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
脑卒中基因数据库
网络安全是机遇吗
python解析mdb数据库
我的世界服务器如何设管理员
dhcp 服务器查询
信息网络安全负责人
习近平网络安全受制于人
网络安全法规定有下列情节
软件开发权利及能力
2016网络安全电视大赛
惠普服务器黄灯
我的世界解说开服务器
苹果服务器云上贵州在哪里
苏州亿思软件开发有限公司
金华比奇网络技术电话
程序设计属于软件开发哪个过程
昨天b站无法连接服务器
国产cpu服务器u盘启动不了
sql2005数据库爆满
求数据库
阿里云服务器介绍ppt
数据库可以看作是存储什么的容器
上海本地软件开发价格大全
服务器安全设置(十一)
怎么样遵守国家网络安全法
软件开发五年职业规划
软件开发团队的人事管理制度
电脑网络技术文案高级
杂多酸结构数据库
京东上的图片传到服务器上