小程序实现手写板签名
作者:李湘湘 发布时间:2024-07-05 17:51:10
标签:小程序,手写板,签名
本文实例为大家分享了小程序实现手写板签名的具体代码,供大家参考,具体内容如下
1.wxss代码
page {
background: #F8F8F8;
}
/* 签名 */
.qianming {
background: #fff;
padding: 20rpx 30rpx;
font-size: 32rpx;
color: #333;
padding-bottom: 0;
position: fixed;
bottom: 0;
left: 0;
width: 92%;
height: 47%;
}
.qianming .clear {
font-size: 26rpx;
color: #669AF2;
}
.flex-def {
display: flex;
}
.flex-one {
flex: 1;
}
.flex-cCenter {
align-items: center;
}
/* 底部按钮 */
.bottom_btn {
font-size: 32rpx;
color: #fff;
padding: 30rpx 0;
background: #fff;
width: 100%;
}
.bottom_btn view {
width: 100%;
background: #FF083C;
border-radius: 40rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
}
/*隐藏滚动条*/
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
display: none;
}
2.wxml代码
<view class="qianming">
<view class="qianming_top flex-def flex-cCenter" wx:if="{{is_sign==1}}">
<view class="flex-one">签名</view>
<view class="clear" bindtap="clear">清空</view>
</view>
<view class="canvas">
<canvas style="width: 100%;height: 360rpx;border: 1px #eee solid;background-color: #fff;border-radius: 16rpx;margin-top: 20rpx;" canvas-id="firstCanvas" id='firstCanvas' bindtouchstart="bindtouchstart" bindtouchmove="bindtouchmove"></canvas>
</view>
<view class="bottom_btn">
<view class="skin-bg-{{theme}}" bindtap='export'>我已知悉并同意</view>
</view>
</view>
3.js代码
data: {
context: null,
imgUrl: "",
index:0,//用来判断是否签名
},
/**记录开始点 */
bindtouchstart: function (e) {
this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
// 记录已经开始签名
this.setData({
index:1
})
},
/**记录移动点,刷新绘制 */
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);
// 记录已经开始签名
this.setData({
index:1
})
},
/**清空画布 */
clear: function () {
this.data.context.draw();
this.setData({
index:0
})
},
/**导出图片 点击确定按钮*/
export: function () {
const that = this;
if (that.data.index==0) {
wx.showToast({
title: '请阅读并签名',
icon: 'none',
duration: 2000
})
return
}
that.data.context.draw(true,
wx.canvasToTempFilePath({
x: 0,
y: 0,
fileType: 'png',
canvasId: 'firstCanvas',
success(res) {
that.upload_image(res.tempFilePath)
},
fail() {
wx.showToast({
title: '签名失败',
icon: 'none',
duration: 2000
})
}
})
)
}
},
// 将图片保存到服务器
upload_image(imgurl) {
var that = this;
},
4.注意json文件必须加这个参数为true,否则签名时晃动
{
"disableScroll": true
}
来源:https://blog.csdn.net/qq_40255459/article/details/123177395


猜你喜欢
- 本文实例讲述了javascript基于prototype实现类似OOP继承的方法。分享给大家供大家参考,具体如下:这里要说明的是,公有属性(
- 在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表:WEEK_INCOME(WEEK VARCH
- 分享一下刚遇到的一个小问题,我有一段类似于这样的python代码:# coding: utf-8class A(object):
- 根据一些CSS写作经验,如何提高渲染效率及所占用消耗的资源,我们来浅谈一下CSS的渲染效率,书写高效的CSS。1、十六进制的颜色值对位数与大
- 网上看到过许多螺旋线的程序,但不是黑色就是单个颜色不变。这里作者编了一个程序,还很漂亮的。希望大家喜欢!!!使用turtle绘图。代码如下。
- 本文实例讲述了python实现合并多个list及合并多个django QuerySet的方法。分享给大家供大家参考,具体如下:在用pytho
- 当你使用UPDATE, INSERT, DELETE语句更新数据的时候,你就改变了两个地方的数据:log buffer和data buffe
- python高级特性1、集合的推导式•列表推导式,使用一句表达式构造一个新列表,可包含过滤、转换等操作。语法:[exp for item i
- 今天遇到mysql服务1067错误的问题,设置使用系统账户也无法启动mysql,后面认证看了系统的配置信息,发现启动文件也就是mysql安装
- 在使用matplotlib画图时,少不了对性能图形做出一些说明和补充。一般情况下,loc属性设置为'best'就足够应付了p
- Protocol Buffers (类似XML的一种数据描述语言)最新版本2.3里,protoc—py_out命令只生成原生的P
- 一种小技巧,可以让python捕获信号量HUP 然后当使用 kill 发起HUP信号量的时候 捕获到进行处理,可以处理为重新读取配置文件并重
- 本文实例讲述了Python实现的读取/更改/写入xml文件操作。分享给大家供大家参考,具体如下:原始文档内容(test.xml):<?
- # _*_ coding:utf-8 _*_# name login_baidu.pyimport urllib,urllib2,httpl
- 本文实例讲述了Sanic框架异常处理与中间件操作。分享给大家供大家参考,具体如下:简介Sanic是一个类似Flask的Python 3.5+
- # 贪婪模式 默认的匹配规则# 在满足条件的情况下 尽可能多的去匹配到字符串import rers = re.match('\d{6
- 最近一直在研究网页特效,看到qq界面的折叠菜单,于是冒出个想法,自己写一个类似的,上网查了一下,发现已经有不少类似的菜单效果,不管那么多,先
- 在图像分割领域,一个重要任务便是分割出感兴趣(ROI)区域。如果是简易的矩形ROI区域其实是非常容易分割的,opencv的官方python教
- 大家都遇到过验证码,随着灌水机的发展,验证码也是日新月异,验证码开始分了繁体简体,带着字母、符号,甚至开始了中文验证码,看到这样的验证码,估
- 环境准备卸载mariadbrpm -qa | grep mariadbrpm -e --nodeps mariadb-libs-5.5.60