const fileManager = wx.getFileSystemManager(); // canvas 全局配置 var context = null; // 使用 wx.createContext 获取绘图上下文 context var isButtonDown = false; var arrx = []; var arry = []; var arrz = []; var canvasw = 0; var canvash = 0; //获取系统信息 wx.getSystemInfo({ success: function (res) { canvasw = res.windowHeight * 1.2; //设备宽度 // canvash = res.windowWidth * 7 / 15; canvash = res.windowWidth * 1.2; } }); //注册页面 Page({ /** * 页面的初始数据 */ data: { signFlag: false, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { context = wx.createCanvasContext('canvas'); context.setFillStyle('#fff') context.fillRect(0, 0, canvasw * 2, canvash) context.draw(true) context.beginPath() context.setStrokeStyle('#000000'); context.setLineWidth(4); context.setLineCap('round'); context.setLineJoin('round'); }, onShow() { arrx = []; arry = []; arrz = []; if(context) { this.cleardraw() } }, isJSON(str) { if (typeof str == 'string') { try { var obj = JSON.parse(str); if (typeof obj == 'object' && obj) { return true; } else { return false; } } catch (e) { return false; } } }, canvasIdErrorCallback: function (e) { }, //开始 canvasStart: function (event) { isButtonDown = true; arrz.push(0); arrx.push(event.changedTouches[0].x); arry.push(event.changedTouches[0].y); //context.moveTo(event.changedTouches[0].x, event.changedTouches[0].y); }, //过程 canvasMove: function (event) { if (isButtonDown) { arrz.push(1); arrx.push(event.changedTouches[0].x); arry.push(event.changedTouches[0].y); // context.lineTo(event.changedTouches[0].x, event.changedTouches[0].y); // context.stroke(); // context.draw() }; this.setData({ signFlag: true, }) for (var i = 0; i < arrx.length; i++) { if (arrz[i] == 0) { context.moveTo(arrx[i], arry[i]) } else { context.lineTo(arrx[i], arry[i]) }; }; context.setStrokeStyle('#000000'); context.setLineWidth(4); context.setLineCap('round'); context.setLineJoin('round'); context.stroke(); context.draw(true); }, canvasEnd: function (event) { isButtonDown = false; }, cleardraw: function () { //清除画布 arrx = []; arry = []; arrz = []; context.clearRect(0, 0, canvasw * 10, canvash); context.draw(true); }, //导出图片 getimg: function () { let that = this if (arrx.length == 0) { wx.showModal({ title: '提示', content: '签名内容不能为空!', showCancel: false }); return false; }; console.log(this.data.signFlag); if (!this.data.signFlag) { wx.showModal({ title: '提示', content: '签名内容不能为空!', showCancel: false }); return false; } //生成图片 wx.canvasToTempFilePath({ canvasId: 'canvas', success: function (res) { //将图片转换为base64 的格式 let signImage = 'data:image/jpg;base64,' + fileManager.readFileSync(res.tempFilePath, 'base64'); //其他 wx.setStorageSync('signImage', signImage) wx.navigateBack() } }) }, })