HTML5 Canvas學習---第一章 《Hello World及圖片顯示》


  在這個章節我們將在Html中使用Canvas標簽,再使用Javascript操縱它,達到顯示《Hello World》及圖片的目的。

開始之前我們需要了解2個對象的概念:window和document。

  1. window對象:window對象在DOM最頂層。我們應該檢測這個對象以確保所有的資源和代碼在我們開始編寫Canvas應用之前已經載入完成。
  2. document對象:該對象包含頁面上所有的HTML標簽。我們需要查看該對象,以尋找<canvas>標簽並且使用JavaScript來操縱他。

HTML代碼為:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" src="chp1.js"></script>
        <script type="text/javascript" src="modernizr.custom.99886.js"></script>
    </head>
    <body>
    
<canvas id="canvas_helloworld" width="500" height="300"> 你的瀏覽器不支持HTML5 Canvas </canvas> </body> </html>

其中chp1.js為我們以后需要編寫的javascript腳本。modernizr.custom.99886.js為modernizr第三方javascript插件,使用它可以避免不同瀏覽器引起的各種問題。

具體內容請看這里:modernizr介紹

首先我們需要檢測window對象的load事件,它是當所有的HTML標簽載入完成后觸發。

檢測load時間有兩種方式

  1. window.addEventListener("load", eventWindowCallBack, false);第一個參數:事件名稱,第二個參數:回調函數。第三個參數:設為false就行
  2. window.onload=function() { ... };

在這個章節以及以后的文章中我們都是用第一種方式。

 

HTML代碼中我們創建了Canvas標簽,它主要有三個屬性。

  •  id:唯一標識符
  • width:寬度
  • height: 高度

第一步檢測瀏覽器是否支持canvas,有多種實現方法:theCanvas為我們在HTML中布置得canvas對象。

第一種為

if(!theCanvas || !theCanvas.getContext) {
        return;
    }

第二種為

!document.createElement('testcanvas').getContext;

第三種為使用modernizr插件

return Modernizr.canvas;

我們使用第三種方式,因為它在不同的瀏覽器中做了不同的處理,拿過來直接用。

第二步獲取canvas對象,並獲取context對象。

var theCanvas = document.getElementById("canvas_helloworld");
var context = theCanvas.getContext("2d"); //canvas中有很多不同的context,這里我們僅需要2D

第三部創建drawScreen()函數,把內容畫到界面中。

在這里我們涉及的函數及屬性為

  1. fillStyle屬性:設置顏色
  2. fillRect(x, y, width, height):畫矩形參數為左上角及寬度和高度。
  3. font屬性:設置文字風格
  4. fillText(text, x, y):往canvas畫出字符串,余下的參數為左上角的x坐標和y坐標。

具體代碼為

        context.fillStyle="#ffffaa";
        context.fillRect(0,0,500,300);
        context.fillStyle="#000000";
        context.font="20px _sans";
        context.textBaseline="top";
        context.fillText("Hello World!", 195, 80);        

還有一步我們需要在canvas載入一張圖片。在canvas中顯示圖片,我們需要實例化一個Image()對象並且指定它的src屬性。

在顯示之前,你需要等待Image載入完畢,當載入完成后可以創建一個回調函數把它顯示到屏幕中。

        var img = new Image();
        img.src="rubi.jpg";
        img.onload=function() {
            context.drawImage(img, 180, 130);
        }

最后我們在canvas的邊上畫一個黑色的矩形,醒目的顯示出來。

     context.strokeStyle="#000000";
        context.strokeRect(5, 5, 490, 290);

整理后的代碼為

/**
 * @author Rafael
 */
window.addEventListener("load",eventWindowLoaded, false);

function eventWindowLoaded() {
    canvasApp();
}

function canvasSupport() {
    // return !document.createElement('testcanvas').getContext;
    return Modernizr.canvas;
}

function canvasApp() {

    if(!canvasSupport()) {
        return;
    }
    var theCanvas = document.getElementById("canvas_helloworld");
    var context = theCanvas.getContext("2d"); 
    //canvas中有很多不同的context,這里我們僅需要2D
        // if(!theCanvas || !theCanvas.getContext) {
        // return;
    // }
    
    function drawScreen() {
        context.fillStyle="#ffffaa";
        context.fillRect(0,0,500,300);
        context.fillStyle="#000000";
        context.font="20px _sans";
        context.textBaseline="top";
        context.fillText("Hello World!", 195, 80);
        
        var img = new Image();
        img.src="rubi.jpg";
        img.onload=function() {
            context.drawImage(img, 180, 130);
        }
        
        context.strokeStyle="#000000";
        context.strokeRect(5, 5, 490, 290);
    }
    drawScreen();
    
}

 

 至此,這一篇的內容講完了,今天是學習HTML5的第一天,以后也還會陸續的把最新的學習成果發表出來供大家分享,具體時間為一周4篇左右。

寫的不好的地方,望大家諒解,我也是第一次寫博客。只要對一個人有幫助,我的目的就達到了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM