DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5教程 >> 用canvas畫簡單的“我的世界”人物頭像
用canvas畫簡單的“我的世界”人物頭像
編輯:HTML5教程     

前言:花了4天半終於看完了《Head First HTML5》,這本書的學習給我最大的感受就是,自己知識的淺薄,還有非常多非常棒的技術在等著我呢。[熊本表情]扶朕起來,朕還能學!

H5新增標簽裡面最喜歡的就是<canvas>,所以這次就用它寫了個小demo,算是表達一下,對於它的愛意吧。

正文:

廢話不多說,上代碼~

html部分

<canvas id="myCanvas" width="800" height="800">想看圖?快去升級你的浏覽器吧~</canvas>

html部分只有這簡單的一句,<canvas>內部包含的文本在浏覽器不支持時輸出,這真的是非常方便的用法呢(此處省略<html><body>等必備標簽)

 

js部分

window.onload = function(){
        //獲取canvas的引用
        var myCanvas = document.getElementById("myCanvas");
        //獲取context的引用
        var context = myCanvas.getContext("2d");
        //臉部
        drawRect(context,15,0,90,130,"#ff813e");
        //頭發
        context.fillRect(10,0,100,40);
        //左邊鬓角
        context.fillRect(10,40,20,20);
        //右邊鬓角
        context.fillRect(90,40,20,20);
        //左邊眼睛
        //左邊眼睛眼眶
        drawRect(context,25,70,25,15,"#fff");
        //左邊眼睛眼球
        drawRect(context,38,70,12,15,"#3d46ce");
        //右邊眼睛
        //右邊眼眶
        drawRect(context,70,70,25,15,"#fff");
        //右邊眼睛眼球
        drawRect(context,70,70,12,15,"#3d46ce");
        //鼻子
        drawRect(context,54,88,12,12,"#ba7b56");
        //嘴巴
        drawRect(context,38,106,42,20,"#450000");
        //舌頭
        drawRect(context,50,116,20,10,"#f494b9");
 };            

雖然看著有這麼十幾行代碼,但是重復的部分很多,也就四個東西:

(1)document.getElementById(id值)

  獲取到我們的canvas,以便在以後的代碼中運用它展現我們美麗的創作

(2)canvas.getContext("2d")

  獲取畫布的上下文,返回一個對象,該對象中有非常多的方法可以為我們創作提供方便。(PS:雖然這裡是2d,但並不代表就一定有3d,不過這也是件好事,說不定它會是由你實現的呢?)

(3)drawRect(context,x,y,rectWidth,rectHeight,color)

  這是一個自定義函數,它將canvas.getContext("2d")返回的對象作為參數傳入,以便我們在函數中調用該對象包含的各種方法。同時傳入想要繪制的點的坐標,以及繪制的矩形的寬度和高度,還有就是,我們填充矩形所用的顏色。

(4)context.fillRect(x,y,rectWidth,rectHeight)

  偶偶偶耶,終於出現了,我們調用了一個context引用對象的方法,它為我們在畫布上繪制出一個黑色矩形。為啥是黑色?因為這是默認顏色啊,如果你想改變顏色,哼哼,那就接著看下面的部分。

接下來,我們就有請drawRect函數登場

 

function drawRect(context,x,y,rectWidth,rectHeight,color){
        //開始一個路徑
        context.beginPath();
        //起始位置移動到x,y參數指定的點
        context.moveTo(x,y);    
        //向坐標為(x+rectWidth,y)的點畫一條路徑
        context.lineTo(x+rectWidth,y);
        //向坐標為(x+rectWidth,y+rectHeight)的點畫一條路徑
        context.lineTo(x+rectWidth,y+rectHeight);
        //向坐標為(x,y+rectHeight)的點畫一條路徑
        context.lineTo(x,y+rectHeight);
        //閉合路徑
        context.closePath();
        //設置顏色
        context.fillStyle = color;
        //填充由我們所繪路徑形成的矩形
        context.fill();
        //設置顏色
        context.fillStyle = "#000";
        //設置描繪線條的寬度
        context.lineWidth = 2;
        //描線
        context.stroke();
 }

 

在drawRect函數中,我們采用了一條邊一條邊的畫矩形,當然你可以用其中用到的方法畫出你喜歡的各種形狀。其中要注意的是,我們畫出的路徑是不可見的,如果想看到路徑,可以用stroke方法描出我們的路徑,而此處我們畫的路徑是一個閉合的矩形,調用fill方法,則會用fillStyle指定的顏色填充該路徑指定的內部區域。所以想要改變填充或者描線的顏色,就試試fillStyle屬性吧~

至此,我們的demo已經完成啦~來看看效果吧~

啊哈哈哈哈啊哈哈哈哈,有沒有愛上canvas呢?(canvas說:就算你不愛我,也有很多人愛得我死去活來的,不過,如果你要愛我的話,勉強也可以接受啦,╮(╯▽╰)╭)

後話:天氣熱了,大家注意防暑,大中午的就別出門了,哪涼快哪待著去吧——來自作死中午出門吃飯,結果中暑頭痛要命的家伙的建議

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved