html5 Canvas drawing (三)


本篇主要講,html5 canvas中圖形的填充(filling)功能應用,主要包括基本顏色定義(Basic Colors)、漸變(Gradient)、圖案(Pattern)、陰影(Shadow);

先貼一個以下所有涉及到的實現運行的基本代碼段: 

Base Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="modernizr-latest.js"></script>
<script type="text/javascript">
window.addEventListener(
"load", eventWindowLoaded, false);
var Debugger = function() {};
Debugger.log
= function(message) {
try {
console.log(message);
}
catch (exception) {
return;
}
}

function eventWindowLoaded() {
canvasApp();
}

function canvasSupport() {
return Modernizr.canvas;
}

function canvasApp() {
//是否支持CANVAS判斷
if(!canvasSupport()) {
return;
}
//取Canvasvar
theCanvas = document.getElementById("canvasOne");
//獲取繪圖環境context
var context = theCanvas.getContext("2d");
//繪圖方法的實現
function drawScreen() {}
//繪圖方法調用執行
drawScreen();
}
</script>
</head>
<body>
<div style="position: absolute; top: 50px; left: 50px; border:1px solid #0000ff">
<canvas id="canvasOne" width="550" height="400">
Your browser does not support HTML5 Canvas.
</canvas>
</div>
</body>
</html>

以下所有實例代碼,只要把上面的function drawScreen()替換掉即可!

 

Basic Colors 基本顏色

html5 中支持用字符串來代替RGB值的顏色主要有Basic Colors

black = #000000      green = #008000     silver = #C0C0C0      lime=#00FF00   
gray = #808080       olive = #808000       white = #FFFFFF      yellow = #FFFF00
maroon = #800000   navy = #000080       red = #FF0000         blue = #0000FF
purple = #800080    teal = #008080        fuchsia = #FF00FF   aqua = #00FFFF

例如:context.fillStyle="#000000"; 或者context.fillStyle="black";

          context.strokeStyle="#COCOCO"; 或者context.strokeStyle="silver";

 

Gradient 漸變

Gradient主要有兩種:Linear gradients線型漸變、Radial gradients徑向漸變;

線型漸變包括有Linear horizontal gradients水平漸變、Vertical gradients垂直漸變、Diagonal gradients對角線漸變;

水平漸變(Linear horizontal gradient)
function drawScreen()
{
var linearGradient=context.createLinearGradient(0,0,60,0);
linearGradient.addColorStop(0,'rgb(255,0,0)');
linearGradient.addColorStop(0.5,'rgb(0,255,0)');
linearGradient.addColorStop(1,'rgb(0,0,255)');

context.fillStyle=linearGradient;
context.fillRect(0, 0,30,40);
context.fillRect(0, 40,60,40);
context.fillRect(0, 80,90,40);
context.fillRect(0, 120,120,40);
context.fillRect(25, 160,150,40);
}

實例效果:

context.createLinearGradient(x1,y1,x2,y2)該方法用於創建線向漸變對象,包括四個參數:漸變起始點的坐標(x1,y1),漸變結束點的坐標(x2,y2);

在上在例子中,.createLinearGradient(0,0,100,0);兩個點的Y坐標都是0,表示是水平漸變;

若是.createLinearGradient(0,0,0,100);兩個點的X坐標都是0,Y坐標在發生變化,則表示為垂直漸變;

若是.createLinearGradient(0,0,100,100);同表示對角線線向漸變;

.addColorStop(position,'rgb')該方法是為漸變添加顏色;包括二個參數:代表顏色要使用的位置(position),第二個代表顏色的rgb值;

其中,position值的范圍是[0.0---1.0],我們可以理解為定義的漸變范圍的一個百分比表示;

context.fillStyle用來設置填充顏色或者漸變風格;

Linear gradient漸變也可用於描邊時使用,設置線框的風格即可:strokeStyle 

水平漸變 邊框
function drawScreen() {
var linearGradient = context.createLinearGradient(0, 0, 60, 0);
linearGradient.addColorStop(0,'rgb(255,0,0)');
linearGradient.addColorStop(.5,'rgb(0,255,0)');
linearGradient.addColorStop(1,'rgb(0,0,255)');
context.strokeStyle = linearGradient;
context.strokeRect(0, 0,60,60);
}

 


徑向漸變Radial gradients

徑向漸變能過contect.createRadialGradient(x1,y1,radius1,x2,y2,radius2)來創建;

包括6個參數:兩個圓的參數,第一個圓的圓心(x1,y1),半徑radius1;第二個圓的圓心(x2,y2),半徑radius2;

Radial gradients
function drawScreen() {
var radialGradient = context.createRadialGradient(70, 70, 10,100,100,70);
radialGradient.addColorStop(0,'rgb(255,0,0)');
radialGradient.addColorStop(.5,'rgb(0,255,0)');
radialGradient.addColorStop(1,'rgb(0,0,255)');
context.fillStyle = radialGradient;
context.fillRect(0, 0,200,200);
}

實例效果:

創建radial gradient漸變時,兩個圓點也可以相同,大家自己試試效果。。嘿嘿!

radial gradient漸變也可用於描邊時使用,設置線框的風格即可:strokeStyle

 

Pattern 圖案

用圖案填充形狀,就是用圖片來填充圖形;

通過context.createPattern(image,repeat)來實現,兩個參數,分別代表:圖片實例、第二個是個字符串類型的,指是否重復;

repeat主要包含四個選項:repeat、repeat-x、repeat-y、no-repeat 

Pattern
function drawScreen() {
var fillImg = new Image();
fillImg.src = 'pattern.png';
fillImg.onload = function(){
var fillPattern = context.createPattern(fillImg,'repeat');
context.fillStyle = fillPattern;
context.fillRect(0,0,500,200);
}
}

實例效果(實例中包含的一上圖片”pattern.png“):

其它的重復效果,大家自己試試,嘿嘿…………

 

Shadow投影效果

給圖形添加投影效果。先看看實例吧;

Shadow
function drawScreen() {
context.fillStyle = 'red';
context.shadowOffsetX = 10;
context.shadowOffsetY = 10;
context.shadowColor = 'black';
context.shadowBlur = 10;
context.fillRect(10,10,400,100);
}

Shadow主要用於四個屬性:

context.shadowOffsetX :代表投影在X方向的偏移量,向正負分別代表,向右向左;大小代表偏移值;

context.shadowOffsetY :代表投影在Y方向的偏移量,向正負分別代表,向下向上;大小代表偏移值;

context.shadowBlur :代表投影模糊效果的大小

context.shadowColor:代表投影的顏色,rgb值("black"\"#000000"\"rgb(0,0,0)");

 

 

OK, 關於在Canvas上進行Draw Shape已全部寫完,歡迎交流學習!!!

下一篇,我們將進行html5 canvas text api學習,敬請期待………… 

 

祝大家龍年吉祥!!!

 


免責聲明!

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



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