这次给大家带来Vue+canvas实现移动端手写板步骤详解,Vue+canvas实现移动端手写板的注意事项有哪些,下面就是实战案例,一起来看一下。

清除

保存

Canvas画板

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(){

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);

//canvas.ontouchmove = canvas.ontouchend = null

}

clear(btn) {

this.cxt.clearRect(0, 0, 300, 600)

}

save(){

return canvas.toDataURL("image/png")

}

}

export default {

data () {

return {

msg: 'Welcome to Your Vue.js App',

val:true,

url:""

}

},

mounted() {

draw=new Draw('canvas');

draw.init();

},

methods:{

clear:function(){

draw.clear();

},

save:function(){

var data=draw.save();

this.url = data;

console.log(data)

},

mutate(word) {

this.$emit("input", word);

},

}

}

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;

}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

vue地区选择组件使用步骤详解

JS+CSS3实现鼠标与图片互动放大效果

移动端html5手写板,Vue+canvas实现移动端手写板步骤详解相关推荐

  1. CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解

    CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解 大家好,又见面了,感觉我上一篇博客对部分同学都挺有帮助的,于是我决定继续写下去,会继续的解析知识点让大家更容易理解,希望能给大家 ...

  2. 如何把canvas元素作为网站背景总结详解

    如何把canvas元素作为网站背景总结详解 一.总结 一句话总结:最简单的做法是绝对定位并且z-index属性设置为负数. 1.如何把canvas元素作为网站背景的两种方法? a.设置层级(本例代码就 ...

  3. 【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解

    注意:手机(APP)打开,内容显示更佳,不会的私聊博主即可 想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉到最下面(PC端Web打开)加博主即可,目录也在最下面. 参加博主前端 ...

  4. vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解

    这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...

  5. sortable vue 排序_Vue使用Sortable步骤详解

    这次给大家带来Vue使用Sortable步骤详解,Vue使用Sortable的注意事项有哪些,下面就是实战案例,一起来看一下. 之前开发一个后台管理系统,里面用到了Vue和Element-UI这个组件 ...

  6. vue build text html,Vue中v-text / v-HTML使用实例代码详解_放手_前端开发者

    废话少说,代码如下所述: /p> 显示123 /p> 补充:vuejs {{}},v-text 和 v-html的区别 {{message}} let app = new Vue({ el ...

  7. 加载vue文件步骤_vue中.vue文件解析步骤详解

    这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...

  8. html5 游戏 算法,JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】...

    JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解[圆形情况] 发布时间:2020-10-10 13:42:43 来源:脚本之家 阅读:95 作者:krapnik 本文实例讲述了JS/HTML ...

  9. 微信公众平台菜单编辑php,Vue.js实现微信公众号菜单编辑器步骤详解(上)

    这次给大家带来Vue.js实现微信公众号菜单编辑器步骤详解(上),Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下. 学习一段时间Vue.js,于是想尝试着做一个像 ...

最新文章

  1. JShell:Java REPL综合指南
  2. python画指数函数图像_解决python中的幂函数、指数函数问题
  3. 分布式系统设计注意点
  4. 【Python刷题】_5
  5. 深入探讨傅立叶变换、拉普拉斯变换、Z变换的联系与应用
  6. Apache Camel 3.1 –更多骆驼核心优化(第2部分)
  7. 云说的到底对不对,京东到底行不行?
  8. Discuz!X1 to Discuz!NT3.1论坛转换工具 v1.0
  9. JNI_Android项目中调用.so动态库实现详解【转】
  10. OD常用快捷键(对比SoftICE)
  11. 725.分隔链表(力扣leetcode) 博主可答疑该问题
  12. 将excel转换为Xml
  13. npm安装项目所有依赖包
  14. dcdc转换器计算机显示,DC/DC转换器
  15. 小马激活工具激活系统后,电脑不能启动,出现错误 a disk read error occurred
  16. 修改php-fpm监听端口,php-fpm配置详解
  17. ERIC6 打开项目报错
  18. 关于【你们数据仓库是怎么设计的】如何回答?
  19. English 背单词
  20. 进博抢先看 | 辉瑞、默沙东、强生、GSK、西门子医疗、蔡司、霍尼韦尔、江森自控、阿迪达斯、迪卡侬、乐高等将亮相第五届进博会...

热门文章

  1. ssh 到另一台机器执行命令
  2. c语言交换两个变量的值
  3. pycharm调试远程服务器代码
  4. 定位系列论文:基于行为识别的楼层定位(二):Research on HAR-Based Floor Positioning
  5. 【数据可视化应用】绘制极坐标(附Python代码)
  6. 手把手干货教学Matlab载波调制
  7. 大数据之“用户行为分析”
  8. php 根据权重随机数,PHP根据概率产生随机数
  9. KINDLE TOUCH修复板砖过程
  10. day16——函数式编程和内置函数