<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在微信小程式上實現手寫簽名,獲取canvascontext新版本和舊版本有點坑,新版本在獲取canvas後如果頁面有滑動,則簽名座標出現異常(在微信開發者工具上會出現2022-2-17),但是在真機上即使滑動也不會出現異常,為了防止出現問題,暫時使用舊版本獲取canvascontext
新版2d canvas
<canvas id="canvas" class="canvas" canvas-id="canvas" type="2d" :disable-scroll="true" @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd" @touchcancel="handleTouchCancel" ></canvas>
舊版canvas
<canvas class="canvas" canvas-id="canvas" :disable-scroll="true" @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd" @touchcancel="handleTouchCancel" ></canvas>
獲取新版2d canvas物件
const query = uni.createSelectorQuery().in(this); query.select('.canvas').node(res => { const { _width, _height } = res.node; /* 獲取canvas wxml節點 */ this.canvas = res.node; this.canvasWidth = _width; this.canvasHeight = _height; /* 獲取canvas 2dcontext */ this.canvasContext= this.canvas.getContext('2d'); /* 縮放設定canvas畫布大小,防止筆跡錯位 */ const ratio = wx.getSystemInfoSync().pixelRatio; this.canvas.width = this.canvasWidth * ratio; this.canvas.height = this.canvasHeight * ratio; this.canvasContext.scale(ratio, ratio); /* 設定線條顏色 */ this.canvasContext.strokeStyle = '#2A2A2A'; /* 設定線條粗細 */ this.canvasContext.lineWidth = 4; /* 設定線條的結束端點樣式 */ this.canvasContext.lineCap = 'round'; }).exec()
縮放設定canvas畫布大小,防止筆跡錯位,這點和頁面滑動沒有關係,不設定也會導致座標錯位
const ratio = wx.getSystemInfoSync().pixelRatio; this.canvas.width = this.canvasWidth * ratio; this.canvas.height = this.canvasHeight * ratio; this.canvasContext.scale(ratio, ratio);
舊版本獲取canvas
this.canvasContext = uni.createCanvasContext('canvas', this); /* 設定線條顏色 */ this.canvasContext.setStrokeStyle('#2A2A2A'); /* 設定線條粗細 */ this.canvasContext.setLineWidth(4); /* 設定線條的結束端點樣式 */ this.canvasContext.setLineCap('round');
簽名js方法,新版本和舊版本只有一個draw的區別,新版本不需要使用draw方法
/* 觸控開始 */ handleTouchStart(e) { this.drawStartX = e.changedTouches[0].x; this.drawStartY = e.changedTouches[0].y; this.canvasContext.beginPath(); }, /* 觸控移動 */ handleTouchMove(e) { /* 記錄當前位置 */ const tempX = e.changedTouches[0].x; const tempY = e.changedTouches[0].y; /* 畫線 */ this.canvasContext.moveTo(this.drawStartX, this.drawStartY); this.canvasContext.lineTo(tempX, tempY); this.canvasContext.stroke(); /* 舊版draw方法,新版本不需要draw */ this.canvasContext.draw(true); /* 重新記錄起始位置 */ this.drawStartX = tempX; this.drawStartY = tempY; }, /* 觸控結束 */ handleTouchEnd(e) { this.canvasContext.save(); }, /* 觸控取消 */ handleTouchCancel(e) { this.canvasContext.save(); }, /* 清空畫布 */ clearCanvas() { this.canvasContext.clearRect(0, 0, this.canvasWidth, this.canvasHeight); },
canvas生成本地圖片(我這裡封裝了元件,需要傳入this防止this指向異常)
/* 生成簽名圖片 */ generateSignImage() { return new Promise((resolve, reject) => { uni.canvasToTempFilePath({ x: 0, y: 0, // canvas: this.canvas, // 新版 canvasId: 'canvas', // 舊版使用id width: this.canvasWidth, height: this.canvasHeight, destWidth: this.canvasWidth, destHeight: this.canvasHeight, fileType: 'png', quality: 1, success: res => { resolve(res.tempFilePath) }, fail: err => { reject(err); } }, this) }) },
新版本的canvas主要是canvas wxml節點和canvas context中做了區分,舊版則只有一個canvas context就可以做全部的操作,在生成圖片時,新版本是傳入wxml物件,舊版本則是傳入唯一canvasId,新版本canvas取消了draw方法
以上就是微信小程式實現手寫簽名的範例程式碼的詳細內容,更多關於小程式手寫簽名的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45