canvas基础—实现颜色渐变
1、 在canvas中主要有两种渐变方式:线条渐变和径向/圆渐变。分别利用createLinearGradient(x,y,x1,y1)和createRadialGradient(x,y,r,x1,y1,r1)来创建。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>渐变</title>
</head>
<body>
<canvas id="canvas_jianbian" width="1000" height="500" style="box-shadow: 0px 0px 20px black;">
当前浏览器不支持canvas
</canvas>
</body>
<script>
var c=document.getElementById("canvas_jianbian");
var ctx=c.getContext("2d");
//创建一个线条渐变
var jb=ctx.createLinearGradient(0,0,200,0);
jb.addColorStop(0, 'blue');//参数为0<stop<1,color
jb.addColorStop(1,"red");
//填充渐变
ctx.fillStyle=jb;
ctx.fillRect(10,10,150,80);//参数依次为:x,y,width,height
</script>
</html>
2、结果:
3、需要注意的是addColorStop()方法指定颜色停止,参数使用坐标来描述,是0至1,并且必须要使用两种或两种以上的颜色。下面添加多个颜色:
<script>
var c=document.getElementById("canvas_jianbian");
var ctx=c.getContext("2d");
//创建一个线条渐变
var jb=ctx.createLinearGradient(0,0,200,0);
jb.addColorStop(0,"black");
jb.addColorStop("0.3","magenta");
jb.addColorStop("0.5","blue");
jb.addColorStop("0.6","green");
jb.addColorStop("0.8","yellow");
jb.addColorStop(1,"red");
//填充渐变
ctx.fillStyle=jb;
ctx.fillRect(10,10,150,100);//参数依次为:x,y,width,height
</script>
4、实现径向/圆渐变。
只需将var jb=ctx.createLinearGradient(0,0,200,0);
这一行替换为:var jb=ctx.createRadialGradient(80,70,5,90,50,80);//(x,y,r,x1,y1,r1)