1. 程式人生 > >canvas基礎一

canvas基礎一

adr 分享圖片 clas height 接收 img rgb 直線 ear

使用HTML5中<canvas>元素可以在頁面中設定一個區域,然後通過JavaScript動態地在這個區域中繪制圖形,要在這塊畫布(canvas)上繪圖,需要取得繪圖上下文,而取得繪圖上下對象的引用,需要調用getContext()方法並傳入上下文的名字。傳入“2d”,就可以取得2D上下文對象。因此,在使用<canvas>元素前,首先要檢測getContext()方法是否存在。


<canvas id="drawing" width="400" height="400">A drawing of something</canvas>

<script>

var drawing = document.getElementById("drawing");
if(drawing.getContext){
    //需要執行的代碼
}
</script>

繪制矩形

與繪制矩形相關的方法:fillRect()、strokeRect()、clearRact(),這三個方法都接收四個參數:矩形的x坐標、矩形的y坐標、矩形的寬度和矩形的高度。

其中fillRect()方法在畫布上繪制的矩形會填充指定的顏色,fillStyle用於填充顏色,對在其後面的fillRect有效,能被後面的fillStyle覆蓋。

content.fillStyle = "
#ff0000" content.fillRect(10,10,50,50); content.fillStyle = "rgba(0,0,255,0.5)" content.fillRect(30,30,50,50);

技術分享圖片

strokeRect()方法在畫布上繪制的矩形會使用指定的顏色描邊。描邊的顏色通過strokeStyle屬性指定。

content.strokeStyle = yellow;
content.strokeRect(80,80,50,50);

content.strokeStyle = rgba(255,0,0,0.5)
content.strokeRect(100,100,50,50);

技術分享圖片

clearRect()方法用於清除畫布上的矩形區域,本質上,這個方法可以把繪制上下文中的某一矩形區域變透明,通過繪制形狀然後清除指定區域,就可以生成有意思的效果。

content.clearRect(40,40,10,10);

技術分享圖片

繪制路徑

要繪制路徑,首先必須調用beginPath()方法,表示要開始繪制新路徑,然後,再通過調用下列方法來實際地繪制路徑。

  • x1,y1,x2,y2,radius):從上一點開始繪制一條弧線,直到(x2,y2)為止,並且以給定的半徑radius穿過(x1,y1)。
  • c1x,c1y,c2x,c2y,x,y):從上一點開始繪制一條曲線,到(x,y)為止,並且以(cx,cy)和(c2x,c2y)作為控制點。
  • lineTo(x,y):從上一點開始繪制一條直線,到(x,y)為止。
  • moveTo(x,y):將繪圖遊標移動到(x,y),不畫線。
  • quadraticCurveTo(cx,cy,x,y):從上一點開始繪制一條二次曲線,到(x,y)為止,並且以(cx,cy)作為控制點。
  • rect(x,y,width,height):從點(x,y)開始繪制一個矩形,寬高由width和height指定,這個方法繪制的是矩形路徑,而不是strokeRect()和fillRect()所繪制的獨立的形狀。
<canvas id="path" width="400" height="400">A drawing of something</canvas>
<script>
  var drawing2 = document.getElementById("path");
   if(drawing2.getContext){
        var path = drawing2.getContext(2d);
    //開始路徑
        path.beginPath();
        //繪制外圓(以(100,100)為圓心,99為半徑順時針繪制一條弧線)
        path.arc(100,100,99,0,2*Math.PI,false);
        // 在繪制內圓之前,將路徑移動到外圓上的某一點上,以避免繪制出多余的線條。(?)
         path.moveTo(194,100);

        //繪制內圓
        path.arc(100,100,94,0,2*Math.PI,false);
        path.moveTo(100,100);
        path.lineTo(100,20);
        path.moveTo(100,100);
        path.lineTo(35,100);
        //描邊路徑:將圖形繪制到畫布上
        path.stroke();
    }
</script>

技術分享圖片

繪制文本

繪制文本主要有fillText()和strokeText()兩個方法,其中fillText()方法使用fillStyle屬性繪制文本,strokeText()方法使用strokeStyle屬性為文本描邊。這兩個方法都可以接收四個參數:要繪制的文本字符串、橫縱坐標和可選的最大像素寬度,這兩個方法都以下列3個屬性為基礎。

  • font:表示文本樣式、大小以字體,用css中指定字體的格式來指定,例如"14px Arial"。
  • textAlign:文本對齊方式,可能的值有"start"、"end"、"left"、"right"、"center"。
  • textBaseline:表示文本的基線,可能的值有"top"、"hanging"、"middle"、"alphabetic"、"ideographic"、"bottom"。
path.font = "bold 14px Arial";
        path.textAlign = "center";
        path.textBaseline = "millde";
        //前面兩個值決定了坐標為文本水平和垂直中點的坐標
        path.fillText("12",100,20);

        path.textAlign = "start";
        // x值代表文本左端的位置
        path.fillText("3",100,40);

        path.textAlign = "end";
        // x值代表文本右端的位置
        path.fillText("9",100,60);

技術分享圖片

canvas基礎一