*新闻详情页*/>
什么是橡皮筋式
指画图时橡皮筋1样伸缩轻松。。
事例以下:point_down:
思路
思路很简易,仅有橡皮筋式绘图作用要留意,下列总结mousedown,mousemove,mouseup3个环节的思路
mousedown:纪录start部位,drag(纪录是不是处在拖拽情况)设定为true,getImageData( 橡皮筋实际效果重要1
)
mousemove:获得拖拽时的部位pos,putImageData( 对应getImageData,橡皮筋实际效果重要2
),依据pos与start画平行线
mouseup:drag修复为false
重要
就在于putImageData()与getImageData()这两个canvas的方式,putImageData()纪录了电脑鼠标点下时的图象,getImageData()对应复原。假如沒有实行这两个方式就会出現下列的实际效果
putImageData()非常于把“扫描仪”出来的线都擦掉
编码
<canvas id="canvas" width="600" height="400" style="border: 1px solid black;"> </canvas> <script type="text/javascript"> let canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d'), canvasLeft = canvas.getBoundingClientRect().left, //getBoundingClientRect()获得元素部位 canvasTop = canvas.getBoundingClientRect().top; let imageData; //纪录图象数据信息 let start = new Map([['x',null],['y',null]]); let drag = false;//纪录是不是处在拖拽情况 canvas.onmousedown = function (e) { let pos = positionInCanvas(e, canvasLeft, canvasTop); start.set('x', pos.x); start.set('y', pos.y); drag = true; //纪录imageData imageData = ctx.getImageData(0,0,canvas.width,canvas.height); } canvas.onmousemove = function (e) { if(drag === true){ let pos = positionInCanvas(e, canvasLeft, canvasTop); //非常于把扫描仪出来的线都擦掉,再次画 ctx.putImageData(imageData, 0, 0); ctx.beginPath(); ctx.moveTo(start.get('x'), start.get('y')); ctx.lineTo(pos.x, pos.y); ctx.stroke(); } } canvas.onmouseup = function (e) { drag = false; } function positionInCanvas (e, canvasLeft, canvasTop) {//获得canvas中电脑鼠标点一下部位 return { x:e.clientX - canvasLeft, y:e.clientY - canvasTop } } </script>
以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。
Copyright © 2002-2020 商城网站建设_微商好助手_微商引流_电商网站模板_微信商家小程序 版权所有 (网站地图) 粤ICP备10235580号