html5學習——canvas

   前言:才簡單的學習完一些關於canvas的知識,簡單的進行各總結,複習。javascript

   canvas,是html5中新增的一個元素,它至關因而在頁面上放置了一個"畫布"。咱們能夠在這張畫布上繪製咱們想要的圖形及文字。html

   首先是在頁面中繪製一張「畫布」,具體操做以下:html5

 <canvas id="canvas" width="1200" height="780" >
      Your browser does not support the canvas element.(若是瀏覽器不支持canvas,顯示本段文字)
  </canvas>

   讓後將canvas與javascript中的代碼進行綁定,具體操做以下:java

var canvas = document.getElementById('canvas');
            if(canvas == null){
                return false;
            }
            var context = canvas.getContext('2d');

  其中canvas.getContext(contextID)是方法返回一個用於在畫布上繪圖的環境。canvas

  參數 contextID 指定了您想要在畫布上繪製的類型。當前惟一的合法值是 "2d",它指定了二維繪圖,而且致使這個方法返回一個環境對象,該對象導出一個二維繪圖 API。瀏覽器

  下面是對canvas對象相關屬性及方法進行介紹。ide

  ① 圖形的繪製函數

  1.矩形的繪製學習

   矩形的繪製有兩種方法一是fill,這是一種實心得繪製,另外一種爲stroke繪製出的矩形爲空心(只具備外邊框)。字體

context.fillRect(x,y,width,height); 繪製實心得矩形  x爲起點的橫座標,y爲起點的縱座標,width是這個矩形的寬度,height爲這個矩形的高度。
context.strokeRect(x,y,width,height);繪製空心的矩形,參數意義同context.fillRect(x,y,width,height);
fillStyle和strokeStyle分別是對所繪製的矩形的實體和邊框的顏色進行設置。
context.rect(x,y,width,height)繪製矩形
context.clearRect(x,y,width,height); 清空給定矩形內的指定像素。具體用法以下:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(0,0,300,150);
ctx.clearRect(20,20,100,50);

 2.對圓形的繪製

     context.arc(x,y,r,sAngle,eAngle,counterclockwise);其中x爲圓形橫座標,y爲圓心縱座標,r是圓的半徑,sAngle起始角,以弧度計(以3點鐘的方向爲起點),eAngle是圓弧結束的角度,counterclockwise是對順時針和逆時針進行設置,默認和true爲順時針。

   ②路徑

     其中經常使用的爲moveTo(x,y)和lineTo(x,y)

     moveTo(x,y)把路徑移動到畫布中的指定點,不建立線條。

     lineTo(x,y)添加一個新點,而後在畫布中建立從該點到最後指定點的線條。

     beginPath() 方法開始一條路徑,或重置當前的路徑。請使用這些方法來建立路徑:moveTo()、lineTo()、quadricCurveTo()、bezierCurveTo()、arcTo() 以及 arc()。

     closePath() 方法建立從當前點到開始點的路徑。

     stroke() 方法會實際地繪製出經過 moveTo() 和 lineTo() 方法定義的路徑。默認顏色是黑色。

     clip()方法從原始畫布中剪切任意形狀和尺寸。一旦剪切了某個區域,則全部以後的繪圖都會被限制在被剪切的區域內(不能訪問畫布上的其餘區域)。您也能夠在使用 clip() 方法前經過使用 save() 方法對當前畫布區域進行保存,並在之後的任意時間對其進行恢復(經過 restore() 方法)。

   3.漸變

//漸變線性變化的運用 須要使用到的對象爲 creatLinearGradient(startX,stratY,endX,endY)
         //addColorStop(offset,color)offset是設定顏色離開漸變始點的偏移量,範圍爲0-1
            var li1 = context.createLinearGradient(0,0,0,200);
            li1.addColorStop(0,'black');
            li1.addColorStop(0.6,'yellow');
            li1.addColorStop(1,'green');
            context.fillStyle = li1;
            context.fillRect(400,0,300,200);
         //漸變徑向繪製
        //須要用到的函數爲createRadialGradient(startX,startY,radiusStart,endX,endY,radiuseEnd)
            var li2 = context.createRadialGradient(100,400,100,100,400,50);
            li2.addColorStop(0,'black');
            li2.addColorStop(0.6,'yellow');
            li2.addColorStop(1,'green');
            context.fillStyle = li2;
            context.fillRect(0,300,200,200)

  4.圖形組合 

     

      context.globalCompositeOperation = type,其中type爲以上值;

 5.圖片

   首先,引入Image對象

 var image = new Image();
     image.src = './imgs/xg.jpg';
 context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height); img是規定要使用的圖像、畫布或視頻。 sx,sy分別是開始剪切的 x ,y座標位置,爲可選參數。swidth,sheight分別是被剪切圖像的寬度和高度,爲可選參數。x,y分別是在畫布上放置圖像的 x 座標位置。width,height分別是。要使用的圖像的寬度和高度,爲可選參數。(伸展或縮小圖像)。

6.文字
Canvas對於繪製文字提供了兩種方法 fillText(填充模式) 或 strokeText(邊框模式)。 
   fillText(String, x, y, [maxWidth]); 
   strokeText(String, x, y, [maxWidth]);
String爲你要繪製的文字,x,y爲文字的座標最後有一個可選參數maxWidth,文字的最大寬度,防止文字在超出長度時,會顯示錯位。
與繪製基本圖形的步驟是同樣的,首先要設置字體的樣式 : 
    font : 文字字體,依據我的喜愛了 
    textAlign : 文字的水平對齊方式,值start(默認),end,left,right,center 
    textBaseline : 文字的垂直對齊方式,值top,hanging,middle,alphabetic(默認),ideographic,bottom 
measureText(String) : 能夠獲取一個TextMetrices對象,他包含了文字繪製後的寬度
7.其餘
save()和restore()

     save()和restore()方法是繪製複雜圖形必不可少的方法.它們分別是用來保存和恢復 canvas 狀態的,都沒有參數。

  Canvas 狀態是以堆(stack)的方式保存的,每一次調用 save 方法,當前的狀態就會被推入堆中保存起來。這種狀態包括:當前應用的變形(即移動,旋轉和縮放,見下):

  strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation 的值

  你能夠調用任意屢次 save 方法。每一次調用 restore 方法,上一個保存的狀態就從堆中彈出,全部設定都恢復。

相關文章
相關標籤/搜索