亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

vue使用canvas實現(xiàn)移動端手寫簽名

瀏覽:57日期:2022-11-18 18:17:18

基于vue使用canvas實現(xiàn)移動端手寫簽名!

之前自己開發(fā)有這么一個需求,需要實現(xiàn)手寫簽名,然后以圖片的形式保存生成圖片的base64數(shù)據(jù)流 。自己在網(wǎng)上找了一堆,都不是很完美。然后參考網(wǎng)上的加自己的優(yōu)化和修改做了一版。希望有需要的朋友可以拿來直接用。

HTML部分:

<template> <div > <div>請輸入您的簽名7:</div> <canvas ref='canvasW' >Canvas畫板</canvas> <img v-bind:src='http://m.lshqa.cn/bcjs/url' alt=''> <div> <button type='' v-on:click='clear'>重寫</button> <button v-on:click='save'>保存簽名</button> </div> </div> </template>

為了節(jié)約時間,樣式寫的比較簡單。湊合看吧!

script部分

<script>var draw;var preHandler = function(e){e.preventDefault();}class Draw { constructor(el) { this.el = el this.canvas = document.getElementById(this.el) this.cxt = this.canvas.getContext(’2d’) this.stage_info = canvas.getBoundingClientRect() this.path = { beginX: 0, beginY: 0, endX: 0, endY: 0 } } init(btn) { var that = this; //初始化生成 this.canvas.addEventListener(’touchstart’, function(event) { document.addEventListener(’touchstart’, preHandler, false); that.drawBegin(event) }) this.canvas.addEventListener(’touchend’, function(event) { document.addEventListener(’touchend’, preHandler, false); that.drawEnd() }) this.clear(btn) } drawBegin(e) { var that = this; window.getSelection() ? window.getSelection().removeAllRanges() : document.selection.empty() this.cxt.strokeStyle = '#000' this.cxt.beginPath() this.cxt.moveTo( e.changedTouches[0].clientX - this.stage_info.left, e.changedTouches[0].clientY - this.stage_info.top ) this.path.beginX = e.changedTouches[0].clientX - this.stage_info.left this.path.beginY = e.changedTouches[0].clientY - this.stage_info.top canvas.addEventListener('touchmove',function(ev){ ev.preventDefault() that.drawing(event) }) } drawing(e) { this.cxt.lineTo( e.changedTouches[0].clientX - this.stage_info.left, e.changedTouches[0].clientY - this.stage_info.top ) this.path.endX = e.changedTouches[0].clientX - this.stage_info.left this.path.endY = e.changedTouches[0].clientY - this.stage_info.top this.cxt.stroke() } drawEnd() { document.removeEventListener(’touchstart’, preHandler, false); document.removeEventListener(’touchend’, preHandler, false); document.removeEventListener(’touchmove’, preHandler, false); } clear(btn) { this.cxt.clearRect(0, 0, this.stage_info.width, this.stage_info.height) // this.cxt.clearRect(0, 0, 373, 200) } save(){ return canvas.toDataURL('image/png') console.log(canvas.toDataURL('image/png')) }}export default { data () { return { msg: ’啦啦啦’, val:true, url:'' } }, mounted() { draw=new Draw(’canvas’); draw.init(); }, methods:{ clear:function(){ draw.clear(); // 用于點擊清除畫布時,同時清除上次保存的圖片 this.save() }, save:function(){ var data=draw.save(); this.url = data; // 生成圖片的base64數(shù)據(jù)流 },mutate(word){ this.$emit('input', word); }, }}</script>

css部分

<style scoped lang='less'> .hello{ height: 100%; width: 100%; background: #ccc; h1, h2 { font-weight: normal; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } #canvas { background: pink; cursor: default; } #keyword-box { margin: 10px 0; } button{font-size: 0.2rem;color: blue;} }

效果圖:

vue使用canvas實現(xiàn)移動端手寫簽名

就到這里吧!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 国产精品亚洲专区在线播放 | 国产午夜在线观看视频播放 | 欧美日韩免费做爰视频 | 国产浮力第一页草草影院 | 一本色道久久88综合亚洲精品高清 | 日本www色视频成人免费网站 | 亚洲激情视频网站 | 一级特黄特黄毛片欧美的 | 深夜福利视频在线观看免费播放 | 国产一级真人毛爱做毛片 | 亚洲欧美日韩精品久久 | 亚洲欧美日本综合一区二区三区 | 国产第一亚洲 | 亚洲精品一区 | 91久久视频| 欧美三级免费 | 精品欧美成人高清视频在线观看 | 久草在线视频在线观看 | 成人免费视频一区 | 特级毛片www欧美 | 日韩性片 | 欧美生活片在线 | 国内精品久久久久久久星辰影视 | 午夜精品成人毛片 | 国产欧美日韩精品在线 | 欧美一级片网址 | 久久99精品国产免费观看 | 欧美精品网站 | 国产欧美日韩一区二区三区在线 | 九九精品免费视频 | 日韩毛片在线播放 | 亚洲在线免费观看视频 | 久久亚洲精品中文字幕第一区 | 免费一级做a爰片性色毛片 免费一极毛片 | 91精品久久国产青草 | 俄罗斯美女在线观看一区 | 久久99精品久久久久久秒播放器 | a一级毛片免费高清在线 | 最新国产美女肝交视频播放 | 免费国产午夜高清在线视频 | 一级a毛片免费 |