1. 程式人生 > >2. canvas繪製漸變效果、繪製圖像

2. canvas繪製漸變效果、繪製圖像

一.繪製漸變效果

  1. 線性漸變

語法:

		//建立CanvasGradient物件
		var g = context.createLinearGradient(x1,y1,x2,y2);
		//追加漸變顏色
		g.addColorStop(顏色開始的相對位置,顏色);

繪製線性漸變的例項:

	<canvas id="cas" width="300" height="300"></canvas>
	<script type="text/javascript">
		var canvas = document.getElementById("cas");
		var ctx = canvas.getContext("2d");

		var g = ctx.createLinearGradient(0,0,300,0);
		g.addColorStop(0, "rgb(255,0,0)");
		g.addColorStop(0.5, "rgb(0,255,0)");
		g.addColorStop(1, "rgb(0,0,255)");

		ctx.fillStyle = g;
		ctx.fillRect(20,20,260,260);
	</script>

效果圖:

 


2.圓形漸變

語法:

		//建立CanvasGradient物件
		var g = context.createRadialGradient(x1,y1,r1,x2,y2,r2);
		//追加漸變顏色
		g.addColorStop(顏色開始的相對位置,顏色);

例子:

	<canvas id="cas" width="300" height="300"></canvas>
	<script type="text/javascript">
		var canvas = document.getElementById("cas");
		var ctx = canvas.getContext("2d");

		var g = ctx.createRadialGradient(150,150,50,150,150,100);
		g.addColorStop(0, "rgb(255,0,0)");
		g.addColorStop(0.5, "rgb(0,255,0)");
		g.addColorStop(1, "rgb(0,0,255)");

		ctx.fillStyle = g;
		ctx.fillRect(20,20,260,260);
	</script>

效果圖:

 


3.Context的屬性

Context中定義的主要屬性
屬性 說明
fillStyle 填充顏色
font 字型顏色
globalAlpha 透明度(0:透明,1:不透明)
globalCompositeOperation 重疊方法的指定
lineCap 線的終端型別(butt、round、square)
lineJoin

線的連線型別(rount、bevel、miter)

lineWidth 線的粗細
miterLimit lineJoin為miter時,2直線結合部分的處理方式
shadowBlur 陰影適用的模糊水平
shadowColor 陰影的顏色
shadowOffsetX 陰影x方向的距離
shadowOffsetY 陰影y方向的距離
strokeStyle 線的顏色
textAlign 文字的配置方法(start、end、left、right、center)
textBaseline 文字基準線的設定

 


二.繪製圖像

 

1.影象繪製的基本步驟如下:

  1. 讀取影象檔案
  2. 在canvas中進行繪製
		var image = new Image();
		image.src = "影象檔案路徑";	
		image.onload = function(){/* 影象讀取時的處理 */};

有三種drawImage()方法用於影象的繪製:

  1. 直接繪製
context.drawImage(image,dx,dy);

     2.尺寸修改(resize)

context.drawImage(image,dx,dy,dw,dh);

    3.影象擷取

context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

2.畫素處理的API:

畫素處理方法
方法 說明
imagedata = ctx.getImageData(sx,sy,sw,sh) 返回以(sx,sy)為左上頂點,寬為sw,高為sh的矩形影象-imagedata物件
ctx.putImageData(imagedata,dx,dy) 將imagedata所表示的影象繪製在頂點座標為(dx,dy)處

簡單的說,使用getImageData()方法取出Canvas上影象的畫素資料,通過javascript加工過這些畫素資料後,使用putImageData方法,重新繪製到Canvas中。

ImageData物件的屬性
屬性 說明
imagedata.width 影象資料的寬度
imagedata.height 影象資料的高度
imagedata.data 影象資料(CanvasPixelArray型別)