微信小程序怎么实现手写签名
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,本文小编为大家详细介绍"微信小程序怎么实现手写签名",内容详细,步骤清晰,细节处理妥当,希望这篇"微信小程序怎么实现手写签名"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在
千家信息网最后更新 2024年11月27日微信小程序怎么实现手写签名
本文小编为大家详细介绍"微信小程序怎么实现手写签名",内容详细,步骤清晰,细节处理妥当,希望这篇"微信小程序怎么实现手写签名"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
在微信小程序上实现手写签名,获取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安全错误
数据库的锁怎样保障安全
电力网络安全知识资料
网络安全教育家长告知书
网络安全教程美食做法
金三立视频管理服务器
传世怪物数据库是哪个好
2020互联网科技行业热点
邦计互联网科技有限公司平度
数据库中包含的对象
虹口区软件开发种类
微软边缘中国服务器网
PDH有线传输网络技术
数据库保存为什么是空的
数据库系统不包括应用程序
梦幻诛仙福利服务器
网络安全福建省院校
中国银行软件开发入围中标
网吧网络安全审批表
sql数据库介质
网络安全工作方案机关
网络安全排查专项治理报告
网络服务器配置与管理题目
aepx服务器问题
移远通信软件开发
工业控制系统网络安全检查
网络安全专项排查情况汇报
常州创新软件开发欢迎咨询
xp服务器怎么进入安全模式
网络安全相关的专业有哪些
搭建服务器设计方案
邮件服务器邮件协议