HTML5渐变实现

渐变

        Context对象可以通过createLinearGradient()和createRadialGradient()两个方法创建渐变对象,这两个方法的原型如下:

        Object createLinearGradient(x1, y1, x2, y2);

        创建一个从(x1, y1)点到(x2, y2)点的线性渐变对象。

         Object createRadialGradient(x1, y1, r1, x2, y2, r2);

         创建一个从以(x1, y1)点为圆心、r1为半径的圆到以(x2, y2)点为圆心、r2为半径的圆的径向渐变对象。

         渐变对象创建完成之后必须使用它的addColorStop()方法来添加颜色,该方法的原型如下:

         void addColorStop(position, color);

         其中position表示添加颜色的位置,取值范围为[0, 1],0表示起点,1表示终点;color表示添加的颜色,取值可以是任何CSS颜色值。

         渐变对象创建并配置完成之后就可以将其赋予Context对象的strokeStyle属性或者fillStyle属性,然后绘制的图形就具有了所需的渐变效果。

    那咱们一起看一下下面这个例子:

  
  
<!DOCTYPE html>
<html>
<head>
<meta charset= "utf-8" >
<title></title>
<style type= "text/css" >
canvas {
left : 50 % ; position : relative ; margin-left : -200px ; top ;
}
</style>
</head>
<body>
<canvas id= "drawDiagonal" width= "400" height= "500" style= "border: 1px solid #008B8B;" ></canvas>
</body>
<script type= "text/javascript" >
var canvas = document . getElementById ( 'drawDiagonal' );
var cd = canvas . getContext ( '2d' );
cd . save ();
cd . translate ( - 10 , 350 );
cd . beginPath ();
cd . moveTo ( 0 , 0 );
cd . quadraticCurveTo ( 170 , - 80 , 260 , - 190 );
cd . quadraticCurveTo ( 310 , - 250 , 410 , - 250 );
cd . strokeStyle = '#663300' ;
cd . lineWidth = 50 ;
cd . stroke ();
cd . restore ();
var lg = cd . createLinearGradient ( 80 , 220 , 240 , 200 ); //可以尝试改变这里的参数,改变不同的效果;
lg . addColorStop ( 0 , 'yellow' );
lg . addColorStop ( 0.9 , '#3CB371' );
lg . addColorStop ( 1 , '#2E8B57' );
cd . fillStyle = lg ; //把设置好的颜色值附给cd
cd . strokeStyle = 'yellowgreen' ;
cd . lineWidth = 4 ;
cd . lineJoin = 'round'
cd . beginPath ();
cd . moveTo ( 200 , 40 );
cd . lineTo ( 160 , 100 );
cd . lineTo ( 185 , 100 );
cd . lineTo ( 145 , 160 );
cd . lineTo ( 170 , 160 );
cd . lineTo ( 135 , 220 );
cd . lineTo ( 180 , 220 );
cd . lineTo ( 170 , 320 );
cd . lineTo ( 235 , 320 );
cd . lineTo ( 220 , 220 )
cd . lineTo ( 260 , 220 );
cd . lineTo ( 225 , 160 );
cd . lineTo ( 250 , 160 );
cd . lineTo ( 210 , 100 );
cd . lineTo ( 235 , 100 );
cd . closePath ();
cd . fill ();
cd . stroke ();
</script>
</html>


其效果如下图所示:


大家试图去尝试一下!哪里有不明白的地方可以相互交流.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值