2. canvas繪製漸變效果、繪製圖像
阿新 • • 發佈:2019-01-02
一.繪製漸變效果
- 線性漸變
語法:
//建立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的屬性
屬性 | 說明 |
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.影象繪製的基本步驟如下:
- 讀取影象檔案
- 在canvas中進行繪製
var image = new Image();
image.src = "影象檔案路徑";
image.onload = function(){/* 影象讀取時的處理 */};
有三種drawImage()方法用於影象的繪製:
- 直接繪製
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.width | 影象資料的寬度 |
imagedata.height | 影象資料的高度 |
imagedata.data | 影象資料(CanvasPixelArray型別) |