最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)現(xiàn)canvas仿ps橡皮擦刮卡效果詳解

 更新時(shí)間:2021年11月22日 11:11:07   作者:java李楊勇  
這篇文章主要為大家詳細(xì)介紹了使用js中的Canvas實(shí)現(xiàn)橡皮擦效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

效果演示:

主要JS代碼實(shí)現(xiàn)

 <div class="box" id="bb">
        <canvas id="cas" width="1366" height="651"></canvas>
    </div>
 
    <script type="text/javascript" charset="utf-8">
        var canvas = document.getElementById("cas"),
            ctx = canvas.getContext("2d");
        var x1, y1, a = 30,
            timeout, totimes = 100,
            jiange = 30;
        canvas.width = document.getElementById("bb").clientWidth;
        canvas.height = document.getElementById("bb").clientHeight;
        var img = new Image();
        img.src = "sha.jpg";
        img.onload = function() {
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
            //ctx.fillRect(0,0,canvas.width,canvas)
            tapClip()
        }
 
        //通過修改globalCompositeOperation來達(dá)到擦除的效果
        function tapClip() {
            var hastouch = "ontouchstart" in window ? true : false,
                tapstart = hastouch ? "touchstart" : "mousedown",
                tapmove = hastouch ? "touchmove" : "mousemove",
                tapend = hastouch ? "touchend" : "mouseup";
 
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.lineWidth = a * 2;
            ctx.globalCompositeOperation = "destination-out";
 
            canvas.addEventListener(tapstart, function(e) {
                clearTimeout(timeout)
                e.preventDefault();
 
                x1 = hastouch ? e.targetTouches[0].pageX : e.clientX - canvas.offsetLeft;
                y1 = hastouch ? e.targetTouches[0].pageY : e.clientY - canvas.offsetTop;
 
                ctx.save();
                ctx.beginPath()
                ctx.arc(x1, y1, 1, 0, 2 * Math.PI);
                ctx.fill();
                ctx.restore();
 
                canvas.addEventListener(tapmove, tapmoveHandler);
                canvas.addEventListener(tapend, function() {
                    canvas.removeEventListener(tapmove, tapmoveHandler);
 
                    timeout = setTimeout(function() {
                        var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
                        var dd = 0;
                        for (var x = 0; x < imgData.width; x += jiange) {
                            for (var y = 0; y < imgData.height; y += jiange) {
                                var i = (y * imgData.width + x) * 4;
                                if (imgData.data[i + 3] > 0) {
                                    dd++
                                }
                            }
                        }
                        if (dd / (imgData.width * imgData.height / (jiange * jiange)) < 0.4) {
                            canvas.className = "noOp";
                        }
                    }, totimes)
                });
 
           
                canvas.addEventListener(tapmove, tapmoveHandler);
                canvas.addEventListener(tapend, function() {
                    canvas.removeEventListener(tapmove, tapmoveHandler);
 
                    timeout = setTimeout(function() {
                        var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
                        var dd = 0;
                        for (var x = 0; x < imgData.width; x += jiange) {
                            for (var y = 0; y < imgData.height; y += jiange) {
                                var i = (y * imgData.width + x) * 4;
                                if (imgData.data[i + 3] > 0) {
                                    dd++
                                }
                            }
                        }
 
                    }, totimes)
 
                });
 
            
        }
    </script>
    <script type="text/javascript">
        window.setTimeout('CountDown()', 100);
        // End
    </script>

以上就是JS實(shí)現(xiàn)canvas仿ps橡皮擦刮卡效果詳解的詳細(xì)內(nèi)容,更多關(guān)于JS 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文看懂JSONP原理和應(yīng)用

    一文看懂JSONP原理和應(yīng)用

    這篇文章主要介紹了一文看懂JSONP原理和應(yīng)用,對(duì)JSONP感興趣的同學(xué),可以參考下
    2021-04-04
  • 微信小程序引用iconfont圖標(biāo)的方法

    微信小程序引用iconfont圖標(biāo)的方法

    這篇文章主要介紹了微信小程序引用iconfont圖標(biāo)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • JS之相等操作符詳解

    JS之相等操作符詳解

    下面小編就為大家?guī)硪黄狫S之相等操作符詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • JS實(shí)現(xiàn)讀取Excel文件內(nèi)容并生成二維碼

    JS實(shí)現(xiàn)讀取Excel文件內(nèi)容并生成二維碼

    這篇文章主要為大家介紹了如何使用JavaScript實(shí)現(xiàn)讀取Excel文件內(nèi)容并生成二維碼下載到本地,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-04-04
  • 詳解Webpack實(shí)戰(zhàn)之構(gòu)建 Electron 應(yīng)用

    詳解Webpack實(shí)戰(zhàn)之構(gòu)建 Electron 應(yīng)用

    本篇文章主要介紹了Webpack實(shí)戰(zhàn)之構(gòu)建 Electron 應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Day.js常用方法集合(附各種事件格式的轉(zhuǎn)換)

    Day.js常用方法集合(附各種事件格式的轉(zhuǎn)換)

    dayjs是一個(gè)輕量的處理時(shí)間和日期的JavaScript庫,下面這篇文章主要給大家介紹了關(guān)于Day.js常用方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Ajax請(qǐng)求時(shí)無法重定向的問題解決代碼詳解

    Ajax請(qǐng)求時(shí)無法重定向的問題解決代碼詳解

    這篇文章主要介紹了Ajax請(qǐng)求時(shí)無法重定向的問題解決代碼詳解,當(dāng)使用Ajax請(qǐng)求時(shí),如果后臺(tái)進(jìn)行重定向到其他頁面時(shí)是無法成功的,只能在瀏覽器地址欄輸入才能夠?qū)崿F(xiàn)重定向。下面我們來看看解決方法吧
    2019-06-06
  • 百度前臺(tái)js筆試題與答案

    百度前臺(tái)js筆試題與答案

    百度前臺(tái)js筆試題與答案...
    2007-09-09
  • js實(shí)時(shí)獲取并顯示當(dāng)前時(shí)間的方法

    js實(shí)時(shí)獲取并顯示當(dāng)前時(shí)間的方法

    這篇文章主要介紹了js實(shí)時(shí)獲取并顯示當(dāng)前時(shí)間的方法,涉及javascript針對(duì)時(shí)間及頁面元素的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • JavaScript字符串檢索字符的方法

    JavaScript字符串檢索字符的方法

    這篇文章主要為大家詳細(xì)介紹了JavaScript字符串檢索字符的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

泾源县| 米泉市| 桃江县| 房产| 新泰市| 广汉市| 班玛县| 太仆寺旗| 绵竹市| 南华县| 麻江县| 武汉市| 商水县| 万载县| 新河县| 弥渡县| 无棣县| 永康市| 岳普湖县| 阿坝| 都江堰市| 金湖县| 秦安县| 祁阳县| 宿松县| 高邮市| 茶陵县| 科尔| 浦东新区| 东莞市| 乳源| 潼南县| 湟中县| 开鲁县| 赣榆县| 宜宾市| 普格县| 青海省| 金塔县| 新野县| 安阳市|