
功能参考来源
<view class="write">
<canvas class="write_main" canvas-id="sign" bindtouchmove="move" bindtouchstart="start" bindtouchend="end" bindtouchcancel="cancel" bindlongtap="tap" disable-scroll="true" binderror="error"></canvas>
<view class="write_text">手写名字</view>
</view>
<view class="write_btn">
<view bindtap="saveClick">完成签字</view>
<view bindtap="clearClick">重新签字</view>
</view>
.write {
position: relative;
width: 100%;
height: 680rpx;
background: #EEEEEE;
border-radius: 10rpx;
}
.write_main {
position: relative;
width: 100%;
height: 100%;
z-index: 5;
}
.write_text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 72rpx;
color: #D9D9D9;
}
.write_btn {
margin-top: 66rpx;
padding: 0 40rpx 52rpx;
}
.write_btn view {
width: 100%;
height: 94rpx;
border-radius: 47px;
text-align: center;
line-height: 94rpx;
}
.write_btn view:nth-child(1) {
color: #fff;
background: #317AFF;
margin-bottom: 30rpx;
}
.write_btn view:nth-child(2) {
color: #555555;
background: #EEEEEE;
}
var content = null;
var touchs = [];
Page({
data: {
imgList: [],
signImage: ''
},
onLoad(options) {
content = wx.createCanvasContext('sign');
content.setStrokeStyle("#000");
content.setLineWidth(3);
content.setLineCap('round');
content.setLineJoin('round');
},
start(event) {
let point = { x: event.changedTouches[0].x, y: event.changedTouches[0].y }
touchs.push(point);
},
move(e) {
let point = { x: e.touches[0].x, y: e.touches[0].y }
touchs.push(point);
if (touchs.length >= 2) {
this.draw(touchs);
}
},
end(e) {
console.log("触摸结束" + e);
for (let i = 0; i < touchs.length; i++) {
touchs.pop();
}
},
cancel(e) {
console.log("触摸取消" + e);
},
tap(e) {
console.log("长按手势" + e);
},
error(e) {
console.log("画布触摸错误" + e);
},
draw(touchs) {
let point1 = touchs[0];
let point2 = touchs[1];
touchs.shift();
content.moveTo(point1.x, point1.y);
content.lineTo(point2.x, point2.y);
content.stroke();
content.draw(true);
},
clearClick() {
content.clearRect(0, 0, 750, 700);
content.draw(true);
},
saveClick() {
wx.canvasToTempFilePath({
canvasId: 'sign',
success: (res) => {
console.log(res.tempFilePath);
this.setData({
signImage: res.tempFilePath
})
},
fail: (err) => {
console.log(err)
}
})
}
})