微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HTML5渐变实现

渐变

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

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

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

         Object createradialGradient(x1,r1,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>


效果如下图所示:


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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。