1. 程式人生 > >html5新增標籤canvas畫布基礎詳解及實操案例(上)

html5新增標籤canvas畫布基礎詳解及實操案例(上)

如果文章有不對之處,還請大神們多多指點
    canvas也是html中的一個元素,可以給這個元素新增一些html屬性,屬性width預設為300px,heigth預設為150px;
    canvas是h5中新增的眾多元素中的一個,直譯過來叫做畫布,可以用來通過h5繪製一些圖形效果;
    剛開始的時候只是知道是用來做一些圖形效果的,但是後來瞭解到canvas的強大
    可以製作遊戲,圖示製作,banner廣告,模擬器,字型設計,製作圖形編輯器等等老多了,不過千里之行始於足下,還是先看看基本的一些方法和屬性吧!


    想要用畫布第一步:需要先建立一個canvas畫布
              第二步:定義畫布的大小,並且給畫布指定一個對應的id
              第三步:在javascript中獲取canvas畫布物件
              第四步:通過canvas物件的getContext()方法獲取canvas繪圖上下文物件


    完成這4步以後呢,就可以正式的繪製圖像啦~~
    不過說了這麼多肯定還是雲裡霧裡,程式猿還是要用程式碼理解起來更快


    <canvas width="500" height="500" id="wandou">您的瀏覽器不支援canvas</canvas>
    這裡有一個非常重要的點,也是時間久了容易忘記的點,就是設定canvas的寬高,一般寫樣式我們習慣了用css中寫,很少用到行內樣式

    但是canvas與其他的不同,想要設定寬高的時候是直接用行內樣式來設定的,而不是用css、js等去對canvas進行設定,否則,畫布會被拉伸,被拉伸的畫布會導致使用者無法看到全部的圖形;大笑

偷笑閉嘴


    第一步、第二步完成了,現在就開始下面的了
    <script>
        var canvas=document.getElementById('wandou');
        //在js中拿到canvas這塊畫布,用到了DOM獲取物件,除了可以用getElementById外,其他的getElementsByTagName等等其他的都可以,但是如果獲取的是陣列物件需要加上下標


        var ctx=canvas.getContext('2d');
        //getContext('2d')表示呼叫canvas的2d上下文,也就是想要繪製平面圖形


        //畫布的左上角為原點,width表示橫向可用畫素,height表示縱向可用畫素
        //下面呢。我們就在canvas上劃一條直線,大家都知道,如果想劃一條直線的就,就需要兩個點來確定直線的兩端,在畫布中也是一樣,需要確認起始點,結束點,再描線,和平時用筆劃畫差不多。


        //canvas預設以畫素為單位,在座標中不需要寫px
        ctx.moveTo(50,50);
        //設定起點,第一個點的位置50,50,也就是距離畫布左上角(原點)x軸向偏移50px,y軸向下偏移50px


        ctx.lineTo(150,250);
        //設定終點,第二個點的位置150,250,,也就是距離畫布左上角(原點)x軸向偏移150px,y軸向下偏移250px


        //大功即將搞成,臨門一腳了
        ctx.stroke();
        //描線,看到這一步的朋友們是不是感覺跟生活中畫圖是一樣的?先畫出兩個點,然後用鉛筆一描線就哦了


        //怎麼樣是不是感覺還是很簡單的?也就只有幾步的事情喲,看完了,趕緊試試吧!!
    </script>

繪製完成的效果,給大家截了下圖,為了方便看,我給canvas加了一個邊框,可能圖形簡單了點,哺乳綱偷笑



上面我們說到用canvas來劃直線,有沒有覺得很神奇,就和劃畫一樣,如果您認為它只能劃直線那就大錯特錯了,現在個讓我們來畫個三角形,這都是生活中最常見的平面圖形了
    首先需要建立一個canvas
    <canvas width="500" height="500" id="wandou"></canvas>
    <script>
        var canvas=document.getElementsByTagName('canvas')[0];
        //這個上面說了喲,如果用getElementsByTagName需要用下標,如果是第一張畫布就用[0]就可以了
        var ctx=canvas.getContext('2d');
        //三角形也是平面圖形所以用2d就可以了
        ctx.moveTo(50,50);
        //起始點
        ctx.lineTo(450,50);
        //第一個終點

        ctx.lineTo(250,200);

        //第二個終點

        ctx.lineTo(50,50);
        //最後一個終點,因為三角形是閉合的,所以座標和初始座標一樣
        ctx.stroke();
        //描邊,三角形就可以了
        //這有個注意的點就是描邊,不是寫一個起始點一個終點,就描邊一次,而是把所有的起始點,終點都定好以後,一次性描邊
    </script>
好啦,既然三角形都會劃了,什麼正方形、矩形、菱形或者多邊形就都可以劃了,發揮想象畫一個自己喜歡形狀把,比如五角星?哈哈


當然除了在body中直接建立一個canvas標籤(比較簡單),也可以在js中建立一個canvas
    <script>
        //首先建立一個canvas標籤
        var canvas=document.createElement('canvas');
        //把canvas標籤插入到body中或者div中
        document.body.appendChild(canvas);
        canvas.id('wandou');
        //給canvas畫布新增id屬性
        canvas.width=500;
        canvas.height=500;
        //給畫布設定寬高
        //這樣就建立完成了,但是可能什麼也看不見,可以給canvas用css設定border:1px solid #000,這樣就能看見畫布的大小了
    </script>


今天簡單瞭解了下canvas,可以繪製基本圖形了,後面會更深入的介紹canvas的屬性及方法,做出更多更好玩的東東...