canvas學習-----畫直線


畫布

  1.添加canvas標簽  可以通過CSS或者JS來設置canvs標簽的width,height;Ps:

<canvas id="cvs"></canvas>

  2.Css設置canvs的width,height;

#cvs {
            position: absolute;
            top: 10px;
            left: 10px;
            width: 355px;
            height: 647px;
            border: 2px dashed green;
        }

  3.通過JS設置width,height寬高

        var cvs = document.getElementById("cvs");
            cvs.width = 300;
            cvs.height = 500;

PS:通過JS和CSS 寬高的區別:

  比如一塊寬1000的畫布,你在畫布左側畫了一條豎線,寬100像素。此時你把畫布自身的width設為500,相當於把畫布的右半邊咔嚓掉了,但此時那豎線的寬度還是100。但如果你通過CSS來把畫布的寬度變成500,那就相當於把畫布由1000擠壓到500,所以豎線的寬度變成了50.(這只是理論情況,實際上設置canvas的寬度時,他會清空掉已畫出來的內容。。)Canvas自身的寬高就是畫布本身的屬性,而css給他的寬高則可以看作是縮放,如果你縮放的太過隨意,那么畫布上的圖形可能變得你自己都認不出來。所以有個建議:除非特殊情況,一定不要用css來定義Canvas的寬高。

畫筆

var ctx = cvs.getContext('2d');

 

開始畫直線

  常用API:  

            //開始一條新路徑/首次畫可以不寫
            ctx.beginPath();
            //設置畫筆的起始位置點
            ctx.moveTo(x,y);
            //設置畫筆移動的目的點
            ctx.lineTo(x,y);
            //設置畫筆的大小
            ctx.lineWidth = 10;
             //setLineDash([x,y]) 設置所畫的直線為虛線,x為線段距離,y表示線段的間隔,如果只有只有一個數 x=y;
            ctx.setLineDash([x,y]);
            //關閉路徑
            ctx.closePath();
            //設置畫筆描邊時的樣式
            ctx.strokeStyle = 'red';
            //設置畫筆開始描邊
            ctx.stroke();
            //設置畫筆填充時的樣式
            ctx.fillStyle = 'red';
            //設置畫筆開始填充
            ctx.fill();
       
/*
說明:
1.ctx.stroke(); 和 ctx.fill(); 是可以同時使用的;樣式依然本身是不同的功能;
2.lineJoin 和 lineCap 區別:lineCap 是設置畫筆本身末端的樣式;而lineJoin是設置兩條相交直線,交匯點的樣式;需要注意;
*/

    lineJoin屬性。lineJoin,意思即線的交匯處,有3個屬性:miter(默認,尖角),bevel(斜角),round(圓角),如圖6:

                   

    lineCap屬性,這個就是定義線條的端點。lineCap有3個值:butt(平,默認),round(圓),square(方),如圖8

                    

實例

  1.描邊

 

        var ctx = cvs.getContext('2d');
            ctx.moveTo(30,10);
            ctx.lineTo(200,10);
            ctx.lineTo(200,100);
            ctx.lineTo(30,100);
            ctx.closePath();
            ctx.stroke();

 

     2.使用填充

            ctx.beginPath();
            ctx.moveTo(30,150);
            ctx.lineTo(200,150);
            ctx.lineTo(200,250);
            ctx.lineTo(30,250);
            ctx.closePath();
            ctx.fillStyle = 'green';
            ctx.fill();

 

 

  3. 設置虛線 setLineDash

 

            //開始一條新路徑,重新設置起始點
            ctx.beginPath();
            ctx.moveTo(30,310);
            ctx.lineTo(210,310);
            ctx.lineTo(210,410);
            ctx.lineTo(30,410);
            ctx.lineWidth = 10;
            //setLineDash([x,y]) 設置所畫的直線為虛線,x為線段距離,y表示線段的間隔,如果只有只有一個數 x=y;
            ctx.setLineDash([5]);
            ctx.strokeStyle = 'red';
            ctx.lineJoin = "round";
            ctx.closePath();
            ctx.stroke();

  4.設置 lineJoin

        var ctx = cvs.getContext('2d');
            ctx.moveTo(30,10);
            ctx.lineTo(200,10);
            ctx.lineTo(200,100);
            ctx.lineTo(30,100);
            ctx.lineWidth = 10;
            ctx.strokeStyle = 'red';
            ctx.lineJoin = "round";
            ctx.closePath();
            ctx.stroke();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM