麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

canvas 橡皮筋式線條繪圖應(yīng)用方法

2024-08-26 00:21:19
字體:
供稿:網(wǎng)友

什么叫橡皮筋式

指畫圖時橡皮筋一樣伸縮自如。。

例子如下:point_down:

canvas,橡皮筋式,線條,繪圖

思路

思路很簡單,只有橡皮筋式繪制功能要注意,以下總結(jié)mousedown,mousemove,mouseup三個階段的思路

mousedown:記錄start位置,drag(記錄是否處于拖動狀態(tài))設(shè)置為true,getImageData( 橡皮筋效果關(guān)鍵1 )

mousemove:獲取拖動時的位置pos,putImageData( 對應(yīng)getImageData,橡皮筋效果關(guān)鍵2 ),根據(jù)pos與start畫直線

mouseup:drag恢復(fù)為false

關(guān)鍵 就在于putImageData()與getImageData()這兩個canvas的方法,putImageData()記錄了鼠標(biāo)點下時的圖像,getImageData()對應(yīng)還原。如果沒有執(zhí)行這兩個方法就會出現(xiàn)以下的效果

canvas,橡皮筋式,線條,繪圖

putImageData()相當(dāng)于把“掃描”出來的線都擦掉

代碼

  <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; //記錄圖像數(shù)據(jù)        let start = new Map([['x',null],['y',null]]);        let drag = false;//記錄是否處于拖動狀態(tài)        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);               //相當(dāng)于把掃描出來的線都擦掉,重新畫               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中鼠標(biāo)點擊位置         return {                  x:e.clientX - canvasLeft,                  y:e.clientY - canvasTop          }               }        </script>

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


注:相關(guān)教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲第一色片 | 一级网站 | 国产一级91 | 黄色一级电影网 | h视频免费在线 | 福利一区二区三区视频在线观看 | 日韩在线欧美在线 | 婷婷中文字幕一区二区三区 | 91成人在线免费视频 | 亚洲欧美成aⅴ人在线观看 免费看欧美黑人毛片 | 黄色成人小视频 | 亚洲小视频在线播放 | 羞羞视频免费观看网站 | 性盈盈盈影院 | 欧美黄色免费视频 | 国产成年人小视频 | 天堂福利电影 | 91女上位 在线播放 性欧美日本 | 中国美女一级黄色大片 | 欧洲色阁中文字幕 | 麻豆19禁国产青草精品 | 久久亚洲美女视频 | 国产1区2区3区中文字幕 | 精品亚洲午夜久久久久91 | 羞羞羞网站 | 国产成人在线播放视频 | 亚洲第一页在线观看 | 国产色爱综合网 | 手机在线看片国产 | 免费的毛片| 暖暖免费观看高清完整版电影 | 毛片福利| 亚洲成人高清电影 | 成人性生活视频在线观看 | 中国av一级片 | 黄视频免费在线 | 羞羞的视频在线免费观看 | 九九午夜视频 | 久久影院免费观看 | 亚洲一区二区三区日本久久九 | 欧美一级黄色录像片 |