【uni-app】uni-app实现手写签名效果:
文章目录
- 一、效果:
- 二、实现:
- 三、扩展:
一、效果:
二、实现:
<template><view class="signature"><canvas class="signature-canvas" canvas-id="mycanvas" @touchstart="touchstart" @touchmove="touchmove"@touchend="touchend"></canvas><view class="signature-button"><button type="warn" @click="clear">重写</button><button type="primary" @click="finish">保存</button></view></view>
</template><script>export default {data() {return {ctx: '', //绘图图像points: [], //路径点集合 signature: '', //签名后台图片地址}},onLoad() {this.createCanvas()},methods: {//创建并显示画布createCanvas: function() {this.ctx = uni.createCanvasContext("mycanvas", this); //创建绘图对象this.ctx.setStrokeStyle('red')//设置画笔样式this.ctx.lineWidth = 4;this.ctx.lineCap = "round"this.ctx.lineJoin = "round"},//触摸开始,获取到起点touchstart: function(e) {let startX = e.changedTouches[0].x;let startY = e.changedTouches[0].y;let startPoint = {X: startX,Y: startY};this.points.push(startPoint);//每次触摸开始,开启新的路径this.ctx.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 = [];},/* ***********************************************# 绘制笔迹# 1.为保证笔迹实时显示,必须在移动的同时绘制笔迹# 2.为保证笔迹连续,每次从路径集合中区两个点作为起点(moveTo)和终点(lineTo)# 3.将上一次的终点作为下一次绘制的起点(即清除第一个点)************************************************ */draw: function() {let point1 = this.points[0]let point2 = this.points[1]this.points.shift()this.ctx.moveTo(point1.X, point1.Y)this.ctx.lineTo(point2.X, point2.Y)this.ctx.stroke()this.ctx.draw(true)},//清空画布clear: function() {let that = this;uni.getSystemInfo({success: function(res) {let canvasw = res.windowWidth;let canvash = res.windowHeight;that.ctx.clearRect(0, 0, canvasw, canvash);that.ctx.draw(true);},})},//完成绘画并保存到本地finish: function() {let that = this;uni.canvasToTempFilePath({canvasId: 'mycanvas',success: function(res) {console.log(res)//上传到服务器// that.api.uploadFile({// url: 'user/upload/one',// filePath: res.tempFilePath,// name: 'file',// success: (uploadFileRes) => {// console.log(uploadFileRes)// that.signature = uploadFileRes.data.url;// that.clear();// that.showCanvas = false;// }// })//保存到本地// let path = res.tempFilePath;// uni.saveImageToPhotosAlbum({// filePath: path,// success: function() {// uni.showToast({// title: "保存成功"// })// },// fail: function() {// uni.showToast({// title: "保存失败"// })// }// })}})},}}
</script><style lang="scss">.signature {padding: 0 10px;&-canvas {width: 100%;height: 360px;box-sizing: border-box;border: 1px solid lightgrey;}&-button {width: 100%;margin-top: 10px;display: flex;button {flex: 1;border-radius: 0 !important;}}}
</style>
三、扩展:
https://uniapp.dcloud.net.cn/api/canvas/CanvasContext.html
【uni-app】uni-app实现手写签名效果:相关推荐
- html 手写字效果,canvas画布实现手写签名效果的示例代码
最近项目中涉及到移动端手写签名的功能需求,将实现代码记录于此,供小伙伴们参考指摘哦~ HTML代码: 手写区 清除 确定 CSS样式: .mSign_signMark_box{padding: 15p ...
- android 手写签批_Android手写签名效果
任何画线的程序,都是先在界面上获取若干不连续的点,然后将这些点连成线. 一些常见的笔型比较好实现,比如说铅笔.钢笔等等,这类笔型的线条的宽度和线条的颜色是固定的,只需要将点连接成固定颜色和固定宽度的线 ...
- html app签名,html5手写签名
sxqm 清 空 生成图片 var canvas, board; canvas = document.getElementById('myCanvas'); canvas.height = 300; ...
- html5 在线签名,html5手写签名
sxqm 清 空 生成图片 var canvas, board; canvas = document.getElementById('myCanvas'); canvas.height = 300; ...
- html5 移动端手写签名,H5移动端项目实现手写签名功能 vue实现手写签名
vue 移动端实现手写签名效果,功能很完美,保存时保存为base64格式. 刚好项目用到此功能,就网上找了一下,清理了无用代码,简单方便,因为项目中多个地方需要使用,所以我将它整理为组件,通过ref和 ...
- H5移动端项目实现手写签名功能 vue实现手写签名
vue 移动端实现手写签名效果,功能很完美,保存时保存为base64格式. base64转file文件格式 vue中将base64转file文件格式 刚好项目用到此功能,就网上找了一下,清理了无用代码 ...
- Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.跟踪滑动轨迹实现手写签名 手写签名的原理是把手机屏幕当作画板,把用户手指当作画笔,手指在屏幕上划来划去,屏幕就会显示手指的移动轨迹,就像画笔在 ...
- 在app端手写签名并保存下来(以文件形式或者是base64编码)
最近做的项目有个需求,在app端手写签名的并保存为文件或者base64编码.所以就刚好有时间写了一下并记录下来: 先上效果图: 分析思路:因为这里是要获取手势轨迹并画出来,所以肯定是有个Touch事件 ...
- uniapp手写_手写签名
前言: 简单的手写签名 参考 https://www.auiaa.com/fron/uni/2019-03-17/103.html 的例子,进行了修改 主要代码 @touchcancel='cance ...
最新文章
- java script (二)
- 机器学习数据预处理之缺失值:中位数填充
- Paper Review: Bayesian Shrinkage towards Sharp Minimaxity
- 【C语言简单说】二十一:双重指针基础 (完结)
- go语言实战_字节跳动年薪50W抢Go开发人才,你还在问该不该学?
- 热电偶校验仪_热电偶校验方法_南昌手持热工校验仪,杭州全功能热工过程校验仪厂家...
- 莫比乌斯函数(bzoj 1101: [POI2007]Zap)
- 大学生计算机科学项目,计算机科学学院喜获2018年大学生创新创业项目多个立项...
- 阿里云搭建MQTT服务器
- Spring MVC 接口返回406错误
- java计算器实训报告_Java实验报告计算器
- 用了半年的时间,把python学到了能出书的程度
- 安卓android+rom定制,移植,安卓Android ROM定制移植教程.doc
- linux下使用tc做流量限速
- HttpClient 调用耗时长服务问题记录和处理方案
- insert table mysql_MYSQL insert data(如何插入数据到table)
- 如何在 SAP ABAP 系统中使用 Adobe Form
- noip 2018游记
- Elastic 极客时间 阮一鸣 学习笔记_入门
- kindle的xray怎么用_xray 使用说明高级版领取方式
热门文章
- 服务器虚拟化用什么显卡,显卡虚拟化使用及配置技术
- 445/139端口的作用与危害
- Android12华为,谷歌“神助攻”!Android12将不支持华为手机,鸿蒙迎来新挑战
- iOS_基于百度地图的开发
- 腾讯开源Spring Cloud Tencent 是什么
- [附源码]Python计算机毕业设计SSM基于协同过滤算法的个性化智能图书推荐系统(程序+LW)
- 苹果未能安装macos_苹果在过去十年中未能达到人体工程学
- 2021年,我推荐你学习的编程语言,各类语言横向对比
- vux组件库更换主题颜色的方法
- 08 python 集合