<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板

        來源:懂視網 責編:小采 時間:2020-11-27 21:09:05
        文檔

        基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板

        基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板:js+html5 canvas實現的涂鴉畫板特效,可調畫筆顏色|粗細|橡皮,可以保存涂鴉效果為圖片編碼,非常適合學習html5的canvas,必須支持html5的瀏覽器才能看到效果。 <!doctype html> <head> <meta http-equiv="
        推薦度:
        導讀基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板:js+html5 canvas實現的涂鴉畫板特效,可調畫筆顏色|粗細|橡皮,可以保存涂鴉效果為圖片編碼,非常適合學習html5的canvas,必須支持html5的瀏覽器才能看到效果。 <!doctype html> <head> <meta http-equiv="

        js+html5 canvas實現的涂鴉畫板特效,可調畫筆顏色|粗細|橡皮,可以保存涂鴉效果為圖片編碼,非常適合學習html5的canvas,必須支持html5的瀏覽器才能看到效果。

        <!doctype html> 
        <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>javascript結合html5 canvas實現的涂鴉板</title> 
        <meta name="Copyright" content="JavaScript分享網 http://www.gxlcms.com/" /> 
        <meta name="description" content="javascript結合html5 canvas實現的涂鴉板,JavaScript分享網,js腳本,網頁特效,網頁模板,png圖標,矢量圖下載" /> 
        <meta content="JavaScript,分享,JavaScript代碼,Ajax,jQuery,網頁模板,PNG圖標,矢量圖" name="keywords" /> 
        </head> 
        <body> 
        <style> 
        *{margin:0;padding:0;} 
        .fa{width:740px;margin:0 auto;} 
        .top{margin:20px 0;} 
        .top input{width:25px;height:25px;border:1px solid #fff;border-radius:4px;background:#ddd;} 
        .top .i1{background:#000000;} 
        .top .i2{background:#FF0000;} 
        .top .i3{background:#80FF00;} 
        .top .i4{background:#00FFFF;} 
        .top .i5{background:#808080;} 
        .top .i6{background:#FF8000;} 
        .top .i7{background:#408080;} 
        .top .i8{background:#8000FF;} 
        .top .i9{background:#CCCC00;} 
        #canvas{background:#eee;cursor:default;} 
        .font input{font-size:14px;} 
        .top .grea{background:#aaa;} 
        </style> 
        </head> 
        <body> 
        <p class="fa"> 
        <p class="top"> 
        <p id="color"> 
        請選擇畫筆顏色: 
        <input class="i1" type="button" value="" /> 
        <input class="i2" type="button" value="" /> 
        <input class="i3" type="button" value="" /> 
        <input class="i4" type="button" value="" /> 
        <input class="i5" type="button" value="" /> 
        <input class="i6" type="button" value="" /> 
        <input class="i7" type="button" value="" /> 
        <input class="i8" type="button" value="" /> 
        <input class="i9" type="button" value="" /> 
        </p> 
        <p class="font" id="font"> 
        請選擇畫筆的寬度: 
        <input type="button" value="細" /> 
        <input type="button" value="中" class="grea"/> 
        <input type="button" value="粗" /> 
        </p> 
        <p> 
        <span id="error">如果有錯誤,請使用橡皮擦:</span> 
        <input id="eraser" style="width:60px;font-size:14px;"type="button" value="橡皮擦" /> 
        </p> 
        <input id="clear" type="button" value="清除畫布" style="width:80px;"/> 
        <input id="revocation" type="button" value="撤銷" style="width:80px;"/> 
        <input id="imgurl" type="button" value="導出圖片路徑" style="width:80px;"/> 
        </p> 
        <canvas id="canvas" width="740" height="420">您的瀏覽器不支持 canvas 標簽</canvas> 
        <p id="p1"></p> 
        </p> 
        <p id="html"> 
        </p> 
        <script> 
        (function(){ 
        var paint={ 
        init:function() 
        { 
        this.load(); 
        }, 
        load:function() 
        { 
        this.x=[];//記錄鼠標移動是的X坐標 
        this.y=[];//記錄鼠標移動是的Y坐標 
        this.clickDrag=[]; 
        this.lock=false;//鼠標移動前,判斷鼠標是否按下 
        this.isEraser=false; 
        //this.Timer=null;//橡皮擦啟動計時器 
        //this.radius=5; 
        this.storageColor="#000000"; 
        this.eraserRadius=15;//擦除半徑值 
        this.color=["#000000","#FF0000","#80FF00","#00FFFF","#808080","#FF8000","#408080","#8000FF","#CCCC00"];//畫筆顏色值 
        this.fontWeight=[2,5,8]; 
        this.$=function(id){return typeof id=="string"?document.getElementById(id):id;}; 
        this.canvas=this.$("canvas"); 
        if (this.canvas.getContext) { 
        } else { 
        alert("您的瀏覽器不支持 canvas 標簽"); 
        return; 
        } 
        this.cxt=this.canvas.getContext('2d'); 
        this.cxt.lineJoin = "round";//context.lineJoin - 指定兩條線段的連接方式 
        this.cxt.lineWidth = 5;//線條的寬度 
        this.iptClear=this.$("clear"); 
        this.revocation=this.$("revocation"); 
        this.imgurl=this.$("imgurl");//圖片路徑按鈕 
        this.w=this.canvas.width;//取畫布的寬 
        this.h=this.canvas.height;//取畫布的高 
        this.touch =("createTouch" in document);//判定是否為手持設備 
        this.StartEvent = this.touch ? "touchstart" : "mousedown";//支持觸摸式使用相應的事件替代 
        this.MoveEvent = this.touch ? "touchmove" : "mousemove"; 
        this.EndEvent = this.touch ? "touchend" : "mouseup"; 
        this.bind(); 
        }, 
        bind:function() 
        { 
        var t=this; 
        /*清除畫布*/ 
        this.iptClear.onclick=function() 
        { 
        t.clear(); 
        }; 
        /*鼠標按下事件,記錄鼠標位置,并繪制,解鎖lock,打開mousemove事件*/ 
        this.canvas['on'+t.StartEvent]=function(e) 
        { 
        var touch=t.touch ? e.touches[0] : e; 
        var _x=touch.clientX - touch.target.offsetLeft;//鼠標在畫布上的x坐標,以畫布左上角為起點 
        var _y=touch.clientY - touch.target.offsetTop;//鼠標在畫布上的y坐標,以畫布左上角為起點 
        if(t.isEraser) 
        { 
        /* 
        t.cxt.globalCompositeOperation = "destination-out"; 
        t.cxt.beginPath(); 
        t.cxt.arc(_x, _y,t.eraserRadius, 0, Math.PI * 2); 
        t.cxt.strokeStyle = "rgba(250,250,250,0)"; 
        t.cxt.fill(); 
        t.cxt.globalCompositeOperation = "source-over"; 
        */ 
        t.resetEraser(_x,_y,touch); 
        }else 
        { 
        t.movePoint(_x,_y);//記錄鼠標位置 
        t.drawPoint();//繪制路線 
        } 
        t.lock=true; 
        }; 
        /*鼠標移動事件*/ 
        this.canvas['on'+t.MoveEvent]=function(e) 
        { 
        var touch=t.touch ? e.touches[0] : e; 
        if(t.lock)//t.lock為true則執行 
        { 
        var _x=touch.clientX - touch.target.offsetLeft;//鼠標在畫布上的x坐標,以畫布左上角為起點 
        var _y=touch.clientY - touch.target.offsetTop;//鼠標在畫布上的y坐標,以畫布左上角為起點 
        if(t.isEraser) 
        { 
        //if(t.Timer)clearInterval(t.Timer); 
        //t.Timer=setInterval(function(){ 
        t.resetEraser(_x,_y,touch); 
        //},10); 
        } 
        else 
        { 
        t.movePoint(_x,_y,true);//記錄鼠標位置 
        t.drawPoint();//繪制路線 
        } 
        } 
        }; 
        this.canvas['on'+t.EndEvent]=function(e) 
        { 
        /*重置數據*/ 
        t.lock=false; 
        t.x=[]; 
        t.y=[]; 
        t.clickDrag=[]; 
        clearInterval(t.Timer); 
        t.Timer=null; 
        }; 
        this.revocation.onclick=function() 
        { 
        t.redraw(); 
        }; 
        this.changeColor(); 
        this.imgurl.onclick=function() 
        { 
        t.getUrl(); 
        }; 
        /*橡皮擦*/ 
        this.$("eraser").onclick=function(e) 
        { 
        t.isEraser=true; 
        t.$("error").style.color="red"; 
        t.$("error").innerHTML="您已使用橡皮擦!"; 
        }; 
        }, 
        movePoint:function(x,y,dragging) 
        { 
        /*將鼠標坐標添加到各自對應的數組里*/ 
        this.x.push(x); 
        this.y.push(y); 
        this.clickDrag.push(y); 
        }, 
        drawPoint:function(x,y,radius) 
        { 
        for(var i=0; i < this.x.length; i++)//循環數組 
        { 
        this.cxt.beginPath();//context.beginPath() , 準備繪制一條路徑 
        if(this.clickDrag[i] && i){//當是拖動而且i!=0時,從上一個點開始畫線。 
        this.cxt.moveTo(this.x[i-1], this.y[i-1]);//context.moveTo(x, y) , 新開一個路徑,并指定路徑的起點 
        }else{ 
        this.cxt.moveTo(this.x[i]-1, this.y[i]); 
        } 
        this.cxt.lineTo(this.x[i], this.y[i]);//context.lineTo(x, y) , 將當前點與指定的點用一條筆直的路徑連接起來 
        this.cxt.closePath();//context.closePath() , 如果當前路徑是打開的則關閉它 
        this.cxt.stroke();//context.stroke() , 繪制當前路徑 
        } 
        }, 
        clear:function() 
        { 
        this.cxt.clearRect(0, 0, this.w, this.h);//清除畫布,左上角為起點 
        }, 
        redraw:function() 
        { 
        /*撤銷*/ 
        this.cxt.restore(); 
        }, 
        preventDefault:function(e){ 
        /*阻止默認*/ 
        var touch=this.touch ? e.touches[0] : e; 
        if(this.touch)touch.preventDefault(); 
        else window.event.returnValue = false; 
        }, 
        changeColor:function() 
        { 
        /*為按鈕添加事件*/ 
        var t=this,iptNum=this.$("color").getElementsByTagName("input"),fontIptNum=this.$("font").getElementsByTagName("input"); 
        for(var i=0,l=iptNum.length;i<l;i++) 
        { 
        iptNum[i].index=i; 
        iptNum[i].onclick=function() 
        { 
        t.cxt.save(); 
        t.cxt.strokeStyle = t.color[this.index]; 
        t.storageColor=t.color[this.index]; 
        t.$("error").style.color="#000"; 
        t.$("error").innerHTML="如果有錯誤,請使用橡皮擦:"; 
        t.cxt.strokeStyle = t.storageColor; 
        t.isEraser=false; 
        } 
        } 
        for(var i=0,l=fontIptNum.length;i<l;i++) 
        { 
        t.cxt.save(); 
        fontIptNum[i].index=i; 
        fontIptNum[i].onclick=function() 
        { 
        t.changeBackground(this.index); 
        t.cxt.lineWidth = t.fontWeight[this.index]; 
        t.$("error").style.color="#000"; 
        t.$("error").innerHTML="如果有錯誤,請使用橡皮擦:"; 
        t.isEraser=false; 
        t.cxt.strokeStyle = t.storageColor; 
        } 
        } 
        }, 
        changeBackground:function(num) 
        { 
        /*添加畫筆粗細的提示背景顏色切換,灰色為當前*/ 
        var fontIptNum=this.$("font").getElementsByTagName("input"); 
        for(var j=0,m=fontIptNum.length;j<m;j++) 
        { 
        fontIptNum[j].className=""; 
        if(j==num) fontIptNum[j].className="grea"; 
        } 
        }, 
        getUrl:function() 
        { 
        this.$("html").innerHTML=this.canvas.toDataURL(); 
        }, 
        resetEraser:function(_x,_y,touch) 
        { 
        /*使用橡皮擦-提醒*/ 
        var t=this; 
        //this.cxt.lineWidth = 30; 
        /*source-over 默認,相交部分由后繪制圖形的填充(顏色,漸變,紋理)覆蓋,全部瀏覽器通過*/ 
        t.cxt.globalCompositeOperation = "destination-out"; 
        t.cxt.beginPath(); 
        t.cxt.arc(_x, _y, t.eraserRadius, 0, Math.PI * 2); 
        t.cxt.strokeStyle = "rgba(250,250,250,0)"; 
        t.cxt.fill(); 
        t.cxt.globalCompositeOperation = "source-over" 
        } 
        }; 
        paint.init(); 
        })(); 
        </script> 
        <p style="clear:both"></p> 
        </body> 
        </html>

        相關文章:

        基于純CSS3的6種手繪涂鴉按鈕效果

        如何使用html5與css3完成google涂鴉動畫

        Html5簡單實現涂鴉板的示例代碼

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板

        基于javascripthtml5canvas實現可調畫筆顏色/粗細/橡皮的涂鴉板:js+html5 canvas實現的涂鴉畫板特效,可調畫筆顏色|粗細|橡皮,可以保存涂鴉效果為圖片編碼,非常適合學習html5的canvas,必須支持html5的瀏覽器才能看到效果。 <!doctype html> <head> <meta http-equiv="
        推薦度:
        標簽: 實現 js 粗細
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 9277手机在线视频观看免费| 老妇激情毛片免费| 美女扒开屁股让男人桶爽免费| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲中文无码永久免费| 亚洲激情在线视频| 免费看搞黄视频网站| 曰批全过程免费视频播放网站 | 中文有码亚洲制服av片| 最近免费中文字幕中文高清 | 免费无码黄网站在线看| 免费一级做a爰片性色毛片| 亚洲欧美中文日韩视频| 亚洲第一成年免费网站| ww在线观视频免费观看| 久久久亚洲欧洲日产国码是AV| 国产免费无码AV片在线观看不卡 | 一级一看免费完整版毛片| 亚洲国产人成精品| 免费人成在线观看播放a| 免费在线观看黄网站| 春暖花开亚洲性无区一区二区| 破了亲妺妺的处免费视频国产 | 亚洲一本一道一区二区三区| 毛片免费在线观看网址| 亚洲精品色播一区二区| 国产精品另类激情久久久免费| 亚洲爆乳无码专区www| 国产一级淫片a视频免费观看| 激情小说亚洲色图| 亚洲综合精品网站在线观看| 中文字幕手机在线免费看电影 | 青青青国产手机频在线免费观看| 国产AV无码专区亚洲AV毛网站| 无码A级毛片免费视频内谢| 亚洲日产2021三区在线| 成年女人看片免费视频播放器| 久久精品熟女亚洲av麻豆| 亚洲精品国自产拍在线观看| 一级做受视频免费是看美女| 久久精品国产亚洲AV麻豆王友容|