发布时间:2024-02-21 09:00
画布可以做很多事情,比如可以绘图,也可以做海报。在这里只是想拿它来的实现亲笔签名,开启不一样的亲笔签名姿势。
开发框架:uniapp
开发语言:vue2
展示平台:微信小程序(实际可以兼容多个平台)
标签和样式没什么好说的,这里绘制了简单的页面,见下图:
到【pages.json】文件中添加横屏切换配置
注意:不同的平台横屏切换将有所不一样。这里是针对微信小程序的横屏适配
{ \"pages\": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { \"path\": \"pages/index/index\", \"style\": { \"navigationBarTitleText\": \"亲笔签名\",//导航栏标题 \"pageOrientation\": \"landscape\",//切换横屏 \"enablePullDownRefresh\": false,//关闭下拉刷新 \"disableScroll\": true // 整体页面禁止上下滑动 } } ], \"globalStyle\": { \"navigationBarTextStyle\": \"black\", \"navigationBarBackgroundColor\": \"#FFFFFF\", \"backgroundColor\": \"#f5f5f5\", \"navigationStyle\": \"default\", // default/custom。custom即取消默认的原生导航栏 \"mp-alipay\": { \"transparentTitle\": \"always\", \"titlePenetrate\": \"YES\" } } }
然后是绘制逻辑处理,注意点在代码中备注:
data() { return { canvasCtx: \'\', //绘图图像 points: [], //路径点集合 hasSign: false, isInit: false, } }, onLoad(query) { this.canvasCtx = uni.createCanvasContext(\'canvas_sign\', this) //创建绘图对象 //设置画笔样式 this.canvasCtx.lineWidth = 6 // 设置线条的端点样式 this.canvasCtx.lineCap = \'round\' // 设置线条的交点样式 this.canvasCtx.lineJoin = \'round\' },
touchstart: function(e) { if (!this.isInit) { this.isInit = true this.autographClick(1); } let startX = e.changedTouches[0].x let startY = e.changedTouches[0].y let startPoint = { X: startX, Y: startY } this.points.push(startPoint) //每次触摸开始,开启新的路径 this.canvasCtx.beginPath() },
touchmove: function(e) { let moveX = e.changedTouches[0].x let moveY = e.changedTouches[0].y let movePoint = { X: moveX, Y: moveY } this.points.push(movePoint) //存点 let len = this.points.length if (len >= 2) { this.draw() //绘制路径 } },
touchend: function() { this.points = [] this.canvasCtx.draw(true) },
这里有几个注意点:
1.为保证笔迹实时显示,必须在移动的同时绘制笔迹
2.为保证笔迹连续,每次从路径集合中区两个点作为起点(moveTo)和终点(lineTo)
3.将上一次的终点作为下一次绘制的起点(即清除第一个点)
draw: function() { let point1 = this.points[0] let point2 = this.points[1] this.points.shift() this.canvasCtx.moveTo(point1.X, point1.Y) this.canvasCtx.lineTo(point2.X, point2.Y) this.canvasCtx.stroke() this.canvasCtx.draw(true) this.hasSign = true },
上面的实现了,说明就可以签下你大名了。这里扫尾工作(按钮点击功能实现)只是景上添花。根据实际情况不一定要做。
demo地址:
gitee地址:https://gitee.com/chenzm_186/autograph-mini.git
到此这篇关于uniapp实现微信小程序的电子签名效果的文章就介绍到这了,更多相关uniapp小程序电子签名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!