HTML 學習筆記 (canvas 基礎)

來源:互聯網
上載者:User

標籤:元素   學習   調用   creat   注意   寫法   offset   window   start   

1.什麼是Canvas

canvas就是一個畫布,可以進行畫任何的線,圖形,填充等一系列操作。這一切都是用Js操作的,另外Canvas不僅僅提供簡單的二維向量繪圖,也提供了三維的繪圖,以及圖片處理等一系列的api支援。

建立canvas標籤

<!--建立canvas元素--><canvas id="myCanvas"></canvas>

上面的標籤只是一個畫布,Id屬性是必須的,後面要用Id來拿到當前的Canvas的Dom對象。通過此Canvase的Dom對象就可以擷取他的上下文了,Canvas繪製圖形都是靠著Canvas對象的內容物件.

var myCanvas;window.onload = function() {    myCanvas = document.getElementById("myCanvas");    //擷取上下文    var context = myCanvas.getContext("2d");    }

Context預設的有兩種繪製模式:第一種繪製線(stroke) 第二種填充(fill)

 

使用canvas 畫一個

Canvas繪製的總體的步驟建立HTML頁面,設定畫布標籤編寫js,擷取畫布dom對象通過Canvas標籤的Dom對象擷取上下文設定繪製線樣式、顏色繪製矩形,或者填充矩形

 

使用canvas繪製矩形
    <body>        <!--建立canvas元素-->        <canvas id="myCanvas10" width="500" height="500"></canvas>        <script>            var mycanvas = document.getElementById("myCanvas10");            //擷取上下文            var context = mycanvas.getContext("2d");            //設定繪畫模式            context.strokeStyle = "#FF0000";            context.setLineWidth(1);            //繪製矩形            context.strokeRect(10,10,100,100);                        //填充模式            context.fillStyle = "blue";            context.fillRect(10,120,100,100);        </script>            </body>

使用canvas繪製圖片
var mycanvas = document.getElementById("myCanvas10");            //擷取上下文            var context = mycanvas.getContext("2d");            var image = new Image();            image.src = "../img/[email protected]";            //當圖片載入完成後            image.onload = function() {                context.drawImage(image,10,10);            }
使用canvas繪製線條

Context對象的beginPath方法表示開始繪製路徑,moveTo(x, y)方法設定線段的起點,lineTo(x, y)方法設定線段的終點,stroke方法用來給透明的線段著色。moveto和lineto方法可以多次使用。最後,還可以使用closePath方法,自動繪製一條當前點到起點的直線,形成一個封閉圖形,省卻使用一次lineto方法。

var myCanvas = document.getElementById("myCanvas10");
            var context = myCanvas.getContext("2d");
            //開始慧子路徑
            context.beginPath();
            //設定線寬
            context.setLineWidth(5);
            context.strokeStyle = "#CC0000"; // 設定線的顏色
            context.moveTo(10,10);
            context.lineTo(10,60);
            context.lineTo(70,10);
            //設定兩條線頂端的模式
            context.lineCap = "round";
            //設定兩條線相交的模式
            context.lineJoin = "round";
            //如果只畫兩條線 使之稱為閉合空間
            context.closePath();
            context.stroke();

使用Canvas繪製文本

Context內容物件的fillText(String,x,y)方法是用來繪製文本的,他的三個參數分別為常值內容,起點座標x 起點座標y 需用font設定字型、大小、樣式(寫法類似與CSS的font屬性)。與此類似的還有strokeText方法,用來添加空心字。另外注意一點:fillText方法不支援文本斷行,即所有文本出現在一行內。所以,如果要產生多行文本,只有調用多次fillText方法。

            var myCanvas = document.getElementById("myCanvas10");            var context = myCanvas.getContext("2d");            context.font = "Bold 20px Arial";            context.textAlign = "left";            context.fillStyle = "#FF0000";            context.fillText("天下第一快",10,30);

效果:

使用Canvas繪製圓和橢圓

在上一篇文章中,筆者已經跟大家介紹過了繪製矩形,繪製其他形狀,比如圓形等,都是一個思路,只不過是方法不同罷了。那接下裡給各位示範一小繪製圓形和橢圓。Context內容相關的arc方法就是繪製圓形或者橢圓,arc方法的x和y參數是圓心座標,radius是半徑,startAngle和endAngle則是扇形的起始角度和終止角度(以弧度表示),anticlockwise表示做圖時應該逆時針畫(true)還是順時針畫(false)。

 <canvas id="demoCanvas" width="500" height="600"></canvas>        <script type="text/javascript">            //通過id獲得當前的Canvas對象            var canvasDom = document.getElementById("demoCanvas");            //通過Canvas Dom對象擷取Context的對象            var context = canvasDom.getContext("2d");            context.beginPath();//開始繪製路徑            //繪製以 (60,60)為圓心,50為半徑長度,從0度到360度(PI是180度),最後一個參數代表順時針旋轉。            context.arc(60, 60, 50, 0, Math.PI * 2, true);            context.lineWidth = 2.0;//線的寬度            context.strokeStyle = "#000";//線的樣式            context.stroke();//繪製空心的,當然如果使用fill那就是填充了。        </script>
使用canvas設定漸層色

createLinearGradient方法用來設定漸層色。

設定漸層色            var myCanvas = document.getElementById("myCanvas10");            var context = myCanvas.getContext("2d");            //createLinearGradient方法的參數是(x1, y1, x2, y2),其中x1和y1是起點座標,x2和y2是終點座標。            //通過不同的座標值,可以產生從上至下、從左至右的漸層等等            var myGradient = context.createLinearGradient(0,0,0,160);            myGradient.addColorStop(0,"#FF0000");            myGradient.addColorStop(0.5,"#BABABA");            myGradient.addColorStop(1,"#00FF00");            context.fillStyle = myGradient;            context.fillRect(10,10,200,200);

 

使用Canvas繪製陰影
繪製陰影            context.shadowOffsetX = 10;//設定水平位移            context.shadowOffsetY = 10;//設定垂直位移            context.shadowBlur = 5;//設定模糊程度            context.shadowColor = "#cc0000";                        context.fillStyle = "red";            context.fillRect(10,10,200,100);

 

 //save方法用於儲存上下文環境,restore方法用於恢複到上一次儲存的上下文環境。

 

ctx.save(); ctx.shadowOffsetX = 10;ctx.shadowOffsetY = 10;ctx.shadowBlur = 5;ctx.shadowColor = rgba(0,0,0,0.5);ctx.fillStyle = #CC0000;ctx.fillRect(10,10,150,100);ctx.restore(); ctx.fillStyle = #000000;ctx.fillRect(180,10,150,100);

//先用save方法,儲存了當前設定,然後繪製了一個有陰影的矩形。接著,使用restore方法,恢複了儲存前的設定.

參考部落格 http://www.2cto.com/kf/201502/376960.html

HTML 學習筆記 (canvas 基礎)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.