diff --git a/src/components/miliu-autograph/miliu-autograph.vue b/src/components/miliu-autograph/miliu-autograph.vue index aab36c1..01b2416 100644 --- a/src/components/miliu-autograph/miliu-autograph.vue +++ b/src/components/miliu-autograph/miliu-autograph.vue @@ -3,7 +3,8 @@ + @touchend="touchend" + disable-scroll="true"/> 清空 @@ -76,31 +77,67 @@ } } //绘制路径 - const draw = ()=> { - let point1 = points[0] - let point2 = points[1] - points.shift() - canvaCtx.moveTo(point1.X, point1.Y) - canvaCtx.lineTo(point2.X, point2.Y) - canvaCtx.stroke() - canvaCtx.draw(true) + // const draw = ()=> { + // let point1 = points[0] + // let point2 = points[1] + // points.shift() + // canvaCtx.moveTo(point1.X, point1.Y) + // canvaCtx.lineTo(point2.X, point2.Y) + // canvaCtx.stroke() + // canvaCtx.draw(true) + // } + const draw = () => { + if (points.length < 2) return; + + canvaCtx.beginPath(); + canvaCtx.moveTo(points[0].X, points[0].Y); + for (let i = 1; i < points.length; i++) { + canvaCtx.lineTo(points[i].X, points[i].Y); + } + canvaCtx.stroke(); + canvaCtx.draw(true); + + // 绘制后清空已绘制点 + points = [points[points.length - 1]]; // 保留最后一个点作为下一次起点 } // 触摸结束,将未绘制的点清空防止对后续路径产生干扰 const touchend = e=>{ points = []; } // 清空画布 - const clear = ()=>{ - return uni.getSystemInfo() - .then(res=>{ - canvaCtx.clearRect(0, 0, res.windowWidth, res.windowHeight); - canvaCtx.draw(true); - return res - }) - .catch(err=>{ - // console.log(err); - }) - } + // const clear = ()=>{ + // return uni.getSystemInfo() + // .then(res=>{ + // canvaCtx.clearRect(0, 0, res.windowWidth, res.windowHeight); + // canvaCtx.draw(true); + // return res + // }) + // .catch(err=>{ + // // console.log(err); + // }) + // } +const clear = () => { + return new Promise((resolve, reject) => { + uni.createSelectorQuery() + .in(_this) + .select('#mycanvas') // 确保 id 和 canvas 的一致性 + .fields({ size: true, rect: true }, data => { + if (!data) { + reject('Canvas not found') + return + } + + const { width, height } = data + + // 真正按 canvas 实际尺寸清除 + canvaCtx.clearRect(0, 0, width, height) + canvaCtx.draw(true) + resolve() + }) + .exec() + }) +} + // 确认 const confirm = ()=>{ uni.canvasToTempFilePath({ canvasId: 'mycanvas', }, _this, _this.parent) diff --git a/src/pages/my/signature.vue b/src/pages/my/signature.vue index f9d168b..200ea9a 100644 --- a/src/pages/my/signature.vue +++ b/src/pages/my/signature.vue @@ -257,7 +257,7 @@ const uploadSignUrl = async (base64Data) => {