canvas、svg、canvas與svg的區別

1、canvascss

  canvas  畫布,位圖html

  <canvas> 標籤訂義圖形,好比圖表和其餘圖像,您必須使用腳原本繪製圖形canvas

  注意:不要在style中給canvas設置寬高,會有位移差svg

  canvas的使用:字體

    先獲取canvas動畫

    var c=document.getElementById("c1")spa

    獲取以後,須要給canvas設置一個繪圖環境3d

    var can=c.getContext("2d")rest

  繪製方塊:orm

    fillrect(x,y,w,h) 繪製一個填充的方格,默認顏色是黑色,

        前兩個參數是座標(x軸和y軸),後兩個參數是寬高

    strokeRect(x,y,w,h) 繪製帶邊框的方塊;

  設置繪圖

    fillStyle:填充顏色(繪製canvas是有順序的)

    lineWidth:線寬度,是一個數值

    strokeStyle:邊線顏色

  注意填充(fillrect)和畫線(strokeRect)的區別。

    先畫線後填充。那麼填充覆蓋畫線,線框的寬度就會縮小一倍

    先填充後畫線。那麼畫線覆蓋填充,方塊的寬度就會縮小一倍

  邊界的繪製

    beginPath:開始繪製路徑

    closePath:結束繪製路徑

    moveTo:移動到繪製的新目標點

    lineTo:新的目標點

    每一個線條只能有一個moveTo()能夠有多個lineTo()

  繪製路徑

    stroke:畫線,默認黑色

    fill:填充 默認黑色

    rect:矩形區域

    clearRect:刪除一個畫布的矩形區域

    save:保存路徑

    restore:回覆路徑

  清除畫布:

    clearRect(x,y,w,h) 清除畫布

    前兩個參數是座標(x軸和y軸),後兩個參數是寬高

  繪製圓形:

    arc(x,y,半徑,起始弧度,結束弧度,旋轉方向)

      x,y是圓心的座標

      turn是逆時針,是從鐘錶3點的那個點開始旋轉的

      逆時針爲-,順時針爲+

  插入字體:

    fillText("內容",x,y) 在 canvas 上繪製實心的文本,xy是座標

    strokeText("內容",x,y)在 canvas 上繪製空心的文本

    textAlign="center" 居中  也就是將xy座標與字體的中心居中

  畫布的平移和旋轉

    translate(x,y) 平移

      畫布的大小位置不變,是畫布的起始位置變了,

      也就是說,是將畫布的座標平移了,原來的起始點(0,0)點,變成了你平移的位置加上-,

      起始點就是平移的位置

      可是做圖的地方仍是原來的大小

    rotate() 旋轉

      屬性是角度,

      旋轉都是以畫布的起始點(0,0)旋轉

    scale(0.5,0.5) 縮放

      畫布的縮放,其實就是講畫布向後移動,跟人的視距就變遠了,近大遠小

2、svg

  svg  矢量圖

  svg繪製矢量圖,canvas繪製位圖的

  svg使用xml格式繪製圖形的

  svg要有一個根節點,叫svg標籤,就相等於html

  裏面的xmlns是命名空間,version是版本

  若是不設置大小,默認佔用大小爲300x150

  定義矩形

    rect標籤

      屬性有:width,height,x,y,rx,ry,fill,stroke-width,stroke style

          stroke-width:線條寬度 stroke:線條顏色

          x 屬性定義矩形的左側位置

          y 屬性定義矩形的頂端位置

          

      style="fill-opacity:0.2;stroke-opacity:0.5;opacity:0.5"

      fill-opacity和opacity的區別:

        fill-opacity只改變填充色的透明度 ,opacity改變fill和stroke的透明度都改變

  定義圓:circle

      circle
        cx:圓的x軸座標

        cy:圓的y軸座標

        r:圓的半徑

        

  定義橢圓:ellipse
      ellipse
        CX屬性定義的橢圓中心的x座標

        CY屬性定義的橢圓中心的y座標

        RX屬性定義的水平半徑

        RY屬性定義的垂直半徑

          

  定義直線:line
      line
        x1 屬性在 x 軸定義線條的開始

        y1 屬性在 y 軸定義線條的開始

        x2 屬性在 x 軸定義線條的結束

        y2 屬性在 y 軸定義線條的結束

        必須結合stroke繪製

        

  定義折線:polyline
    polyline

    屬性是points,折線點的座標

    

  定義路徑:path
    path,有個d屬性
      d="定義路徑指令"
      M = moveto 起點座標,開始點

      L = lineto 相鄰座標,下一個點

      H = horizontal lineto H表明水平畫線,默認Y軸上的值同樣

      V = vertical lineto V表明水平畫線,默認X軸上的值同樣

      A = elliptical Arc 用於畫曲線的

    以上全部命令均容許小寫字母。大寫表示絕對定位,小寫表示相對定位(相對於上一個點)。

      

  transform:轉換,

    平移,旋轉都是以起點((0,0)svg的左上角)點爲參考點,而css中以元素的中心點爲參考點

  組合  g
    g用於將 相關元素進行組合
    g身上的屬性,子元素都會繼承,可是g上的屬性都必須是顯現屬性,不是svg元素私有的,
    好比g上的圓心座標就不行

  定義文本:text

    x座標,y座標,

    xy的值在字體的左下角

    文字居中處理:text-anchor:middle;

      

  圖片:image

    x,y是座標,xlink:href="圖片所在的路徑"

    

  克隆:use

    x,y是相對於原始的元素的座標位置,不是相對svg的(0,0)點的座標

    x="克隆元素的左上角的x軸"
    y="克隆元素的左上角的y軸"
    width="克隆元素的寬度"
    height="克隆元素的高度"
    xlink:href="URI引用克隆元素"

    

  動畫:animate

    這個標籤是你放在哪一個標籤裏就是哪一個動
    注意:
      寫在須要動畫元素的中間
    attributeName="目標屬性名稱"
    from="起始值"
    to="結束值"
    dur="持續時間"
    repeatCount="動畫時間將發生",indefinite:無限次

     

3、canvas與svg的區別

    一、svg繪製出來的每個圖形的元素都是獨立的DOM節點,可以方便的綁定事件或用來修改。canvas輸出的是一整幅畫布;

    二、svg輸出的圖形是矢量圖形,後期能夠修改參數來自由放大縮小,不會是真和鋸齒。而canvas輸出標量畫布,就像一張圖片同樣,放大會失真或者鋸齒

相關文章
相關標籤/搜索